91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java內存區域的各自用途是什么

發布時間:2021-10-14 16:37:57 來源:億速云 閱讀:133 作者:柒染 欄目:編程語言

Java內存區域的各自用途是什么,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

  每個內存區域都有各自的用途,以及創建和銷毀時間,有的區域會隨著虛擬機的啟動而存在,有的區域依賴用戶線程而建立和銷毀,接下來一次介紹這些內存區域。

程序計數器

  程序計數器(ProgramCounterRegister)是線程私有的內存區域,是當前線程所執行的字節碼的行號指示器,是一塊較小的內存空間。

  字節碼解釋器(java源碼編譯成字節碼,運行時解釋成機器碼執行)工作時,就是通過改變程序計數器的值,來選取下一條要執行的字節碼。分支、循環、跳轉等都依賴程序計數器執行。

  當線程執行Java方法時,程序計數器記錄的是正在執行的虛擬機字節碼指令地址;當線程執行Native方法時,程序計數器的值為空(Undefined)。程序計數器是唯一一個在Java虛擬機規范中沒有規定OutOfMemoryError的內存區域。

Java虛擬機棧

  Java虛擬機棧(JavaStack)也是線程私有的內存區域,它的生命周期與線程相同。虛擬機棧描述的是Java方法執行的內存模型:每個方法在執行時都會創建一個棧幀(StackFrame)用以存儲局部變量表、操作數棧、動態鏈接、方法出口等信息。每一個方法從開始調用到執行完成的過程,就對應一個棧幀在虛擬機棧中從入棧到出棧的過程。

  局部變量表存放了編譯期可知的各種基本數據類型(booleanbytecharshortintlongdoublefloat)、對象引用,以及returnAddress類型(指向一條字節碼指令的地址)。局部變量表所需內存空間在編譯期間完成分配,當進入一個方法時,需要在棧幀中分配多大的局部變量空間是完全確定的,在方法運行期間不會改變局部變量表大小。

  在Java虛擬機規范中,Java虛擬機棧有可能會出現兩種異常:StackOverflowError和OutOfMemoryError。如果線程請求的棧深度大于虛擬機棧的深度,則會StackOverflowError。如果虛擬機棧動態擴展時申請不到足夠的內存,則會OutOfMemoryError。

本地方法棧

  本地方法棧(NativeMethodStack)與Java虛擬機棧的作用一樣,是線程私有的,區別就是Java虛擬機棧為執行Java方法服務,本地方法棧為Native方法服務,虛擬機規范并沒有對本地方法棧做強制規定,在HotSpot虛擬機中把本地方法棧和虛擬機棧合二為一了。此內存區域也會拋出StackOverflowError和OutOfMemoryError。

Java堆

  Java堆(JavaHeap)是一塊被所有線程共享的內存區域,同時也是Java虛擬機所管理的內存中最大的一塊,在虛擬機啟動時創建。此內存區域的唯一目的就是存放對象實例,幾乎所有的對象實例都在這里分配內存。

  Java堆是垃圾收集器管理堆主要區域,也被稱做“GC堆”。現在垃圾收集器基本都采用分代收集算法,所以從內存回收角度看,Java堆還可以細分為:新生代和老年代;新生代可以再細分為Eden空間、FromSurvivor空間、ToSurvivor空間。

關于Java內存區域的各自用途是什么問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乡宁县| 江北区| 越西县| 平邑县| 正阳县| 博白县| 眉山市| 宁陵县| 中方县| 远安县| 昌图县| 唐山市| 揭阳市| 鸡东县| 清新县| 宁夏| 邛崃市| 莆田市| 芦山县| 深泽县| 镇赉县| 滦平县| 阿城市| 登封市| 余江县| 大竹县| 万荣县| 杂多县| 韩城市| 江油市| 罗山县| 五寨县| 吐鲁番市| 多伦县| 兴城市| 中西区| 廉江市| 磐安县| 威信县| 张家港市| 马关县|