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

溫馨提示×

溫馨提示×

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

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

Java 虛擬機: JVM內存分區及其用途

發布時間:2020-07-26 18:00:04 來源:網絡 閱讀:143 作者:涼白開dream 欄目:編程語言

Java虛擬機在執行Java程序的過程中會把它所管理的內存劃分為若干個不同的數據區,這些區域都有各自的用途,以及創建和銷毀的時間,有的區域隨著虛擬機進程的啟動而存在,有些區域則依賴用戶線程的啟動和結束而建立和銷毀。

Java虛擬機所管理的內存將會包括以下幾個運行時數據區域:

1、程序計數器

2、Java虛擬機棧

3、本地方法棧

4、Java堆

5、方法區

下面分別介紹各個內存分區及它們的作用:

1、程序計數器

(PC)程序計數器是一塊較小的內存分區,你可以把它看做當前線程所執行的字節碼的指示器。

在虛擬機的概念模型里,字節碼指示器工作時,就是通過改變計數器的值來選擇下一條需要執行的字節碼指令。

程序技術器為線程私有,每個線程都有它們各自的程序計數器,這樣再多線程的情況下,線程之間的來回切換,也能正確找到上次切換時執行的位置。(線程隔離的,線程安全的)

如果線程正在執行的是一個Java方法,那么程序計數器記錄的是當前線程正在執行的字節碼指令的地址;如果線程正在執行的是一個native方法,則計數器值為空。

此內存區域是唯一一個Java虛擬機規范中沒有規定任何內存泄漏OutOfMemoryError(OOM)情況的區域。

2、Java虛擬機棧

虛擬機棧也為線程私有的,它的生命周期與線程相同;

虛擬機棧可以看做是Java方法執行的內存模型:每個方法執行的同時都會創建一個棧幀用于存儲局部變量表、操作數棧、動態鏈接、方法出口等信息。一個Java方法從調用到執行完的過程,就對應著一個棧幀從虛擬機棧入棧到出棧的過程;

局部變量表中存放了編譯期可知的基本數據類型、對象引用、returnAddress類型(指向了一條字節碼指令的地址);

在虛擬機棧中可能會出現兩種異常:StackOverflowError和OutOfMemory。

StackOverflowError:如果線程請求的棧深度大于當前虛擬機所允許的深度,會拋出該異常;

OutOfMemory:如果虛擬機棧可以動態擴展,當擴展時無法申請到足夠的內存,會拋出該異常;

3、本地方法棧

本地方法棧類似與虛擬機棧,它們不同之處在于,虛擬機棧是為虛擬機執行的Java方法服務,而本地方法棧是為虛擬機使用到的Native方法服務;

在本地方法棧可能會出現兩種異常:StackOverflowError和OutOfMemory

4、Java堆

Java堆是被所有線程共享的一塊區域,它也是Java虛擬機管理的內存中最大的一塊,它在虛擬機啟動時創建;

Java堆唯一的目的就是存放對象實例
,幾乎所有的對象實例的都在這里分配內存;

Java堆是垃圾收集器管理的主要區域,因此很多時候也被稱為GC堆;

Java堆可以處于物理上不連續的內存空間中,只要邏輯上連續即可,在實現時既可以是固定大小也可以是可擴展的,如果堆中沒有內存完成實例分配,并且堆也無法再擴展時,將會拋出OutOfMemory異常;

5、方法區(運行時常量池)

方法區也是內存共享的一塊區域,它用于存放已被虛擬機加載的類信息、常量、靜態變量、即時編譯器編譯后的代碼等數據;

方法區中,垃圾收集比較少見,但并不是不進行GC,這個區域的回收目標主要是針對常量池的回收和對類型的卸載

方法區類似于Java堆,不要連續的內存和可以選擇固定大小或者可擴展。它還可以選擇不實現垃圾收集;

當方法區無法滿足內存分配需求時,會拋出OutOfMemory異常;

方法區中還存在一個運行時常量池(無關乎線程安全與否)(因為其數據不能更改),常量池用于存放編譯期生成的各種字面量和符號引用,它具有動態性,不要求常量一定只有編譯期才能產生,運行期間也可能將新的常量放入池中;

向AI問一下細節

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

AI

都匀市| 萍乡市| 临潭县| 集安市| 治多县| 桦南县| 临城县| 玛沁县| 深水埗区| 澄迈县| 通州区| 杂多县| 岚皋县| 宜川县| 淅川县| 保亭| 钟祥市| 临颍县| 隆子县| 维西| 资溪县| 平果县| 石嘴山市| 深泽县| 镇赉县| 田东县| 湘潭市| 雷波县| 民勤县| 蓬溪县| 小金县| 临武县| 福建省| 柳林县| 克拉玛依市| 乃东县| 渑池县| 大石桥市| 中山市| 茶陵县| 承德县|