亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

jvm的內存結構主要包含哪幾個部分

發布時間:2020-06-04 14:24:33 來源:億速云 閱讀:736 作者:Leah 欄目:編程語言

jvm的內存結構主要包含哪幾個部分?針對這個問題,今天小編總結這篇有關內存結構的文章,希望能幫助更多想解決這個問題的朋友找到更加簡單易行的辦法。

jvm內存分為五大塊:

jvm的內存結構主要包含哪幾個部分

標灰的是線程公有的內存區域,沒有標灰的是線程私有

一:程序計數器:程序計數器是用來指示當前線程要執行哪條指令,并且在執行完該條指令后讓程序計數器指向下一條指令,直到將程序執行完畢。指令需要靠cpu來執行,在多線程中,多個線程是通過輪流切換分配cpu的時間片而執行的,在切換時需要記錄當前執行到了哪條指令以便將來繼續執行,每一個線程都需要有自己的程序計數器,所以程序計數器是線程私有的內存

二:虛擬機棧:通常我們把jvm的內存粗略的分為堆和棧,其中的棧指的就是虛擬機棧,虛擬機棧也是線程私有的

虛擬機棧對應的是方法的內存區域,每個方法執行時都會創建一個棧幀,用來存儲該方法的局部變量表,操作數棧,動態鏈接,方法返回地址:

jvm的內存結構主要包含哪幾個部分

1. 局部變量表局部變量表中存儲的是方法的參數和方法中定義的局部變量,在編譯期間就為局部變量表分配好了內存空間。局部變量表中存儲三種類型的數據:

(1) 基本數據類型

(2) 引用類型:指向一個對象在內存中的地址

(3) returnAddress類型:指向指令的地址(已經很少見了,指向異常處理的指令,現在已經由異常表代替)

2. 操作數棧:當虛擬機執行一些指令的時候會對操作數棧進行入棧或出棧的操作,比如iadd指令將兩個數相加,會先將操作數棧中的兩個數彈出來(出棧),相加后再壓入棧(入棧)中。

3. 動態鏈接:在運行時常量池中存儲了諸如類名,方法名,我們要找到目標類,執行相應的方法就需要用到動態鏈接,棧幀中有一個指向運行時常量池的引用,通過這個引用可以找到相應的類名和方法名,但是光知道名稱是沒法執行方法的,需要通過名稱找到相應的類和方法在內存中的地址,這個過程就是動態鏈接。

4. 方法返回地址:當方法執行完以后如果有返回值,就會把這個返回值返回給該方法的調用者,方法的返回就是我們java中用到的return命令。方法返回之后調用者需要繼續往下執行就需要知道要執行的地址,該地址就是方法返回地址,它被記錄在了棧幀中,當然在發生異常的情況下不會有返回值,要繼續執行的地址可以通過異常處理器表來確定。

虛擬機棧可能出現兩種類型的異常:

1. 線程請求的棧深度大于虛擬機允許的棧深度會拋出StackOverflowError,(虛擬機棧空間不能動態擴展的情況下)

2. 如果虛擬機棧空間可以動態擴展(目前多數的虛擬機都可以),當動態擴展無法申請到足夠的空間時會拋出OutOfMemory異常。

三:本地方法棧:本地方法棧與虛擬機棧的作用是一樣的,區別在于虛擬機棧為虛擬機執行java方法服務,而本地方法棧為虛擬機執行native方法服務,native方法為本地方法,不是用java語言寫的有可能是c或者c++寫的,在jdk中就有很多c的代碼,就是提供給本地方法來調用的。

四:堆:通常我們把jvm的內存粗略的分為堆和棧,其中的堆就是指它,它是虛擬機中占用內存最大的一塊,是被所有線程共享的一塊區域,它是用來存放對象實例的。是垃圾收集器管理的主要區域。

五:方法區:方法區也是被所有線程共享的一塊區域,它存儲的是類信息,常量,靜態變量,編譯后的字節碼等信息。方法區中還有一塊區域“運行時常量池“:運行時常量池中存儲的是編譯期生成的各種字面量和符號引用。字面量相當于Java里常量的概念,比如字符串,聲明為final的常量值等,符號引用包括了:類和接口名,字段名,方法名。

看完上述內容,你們對jvm的內存結構有進一步的了解嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀。

向AI問一下細節

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

AI

鄄城县| 新沂市| 巴林左旗| 新丰县| 蒙自县| 保康县| 渝中区| 新宁县| 屯留县| 铜陵市| 佛山市| 娱乐| 牡丹江市| 辽宁省| 赣榆县| 荥经县| 共和县| 元江| 福泉市| 湟中县| 中西区| 阿城市| 沙河市| 涡阳县| 辽阳县| 汉沽区| 女性| 凤庆县| 阳西县| 新郑市| 石家庄市| 成安县| 平江县| 霞浦县| 吴堡县| 安徽省| 秦皇岛市| 施秉县| 临颍县| 苏尼特右旗| 绥阳县|