jvm內(nèi)存劃分概覽

JVM運行時數(shù)據(jù)區(qū)內(nèi)存分布:

1 程序計數(shù)器:

很小的內(nèi)存,記錄當前線程所執(zhí)行的字節(jié)碼的行號指示器,字節(jié)碼的解釋器根據(jù)計數(shù)器的數(shù)值來確定下一條執(zhí)行的字節(jié)碼指令,邏輯處理、跳轉(zhuǎn)、異常等都需要其協(xié)作完成。該區(qū)域線程隔離,各個線程之間的計數(shù)器互不影響,獨立存儲,這個區(qū)域也被稱為“線程私有域”。
參考鏈接: https://blog.csdn.net/hhb200766/article/details/46912325

2 java虛擬機棧:java方法執(zhí)行的內(nèi)存模型

每個方法執(zhí)行的時候會創(chuàng)建一個棧幀,存儲局部變量表、操作數(shù)棧、動態(tài)鏈接,方法接口等信息,每個方法從調(diào)用到結(jié)束就對應著一個棧幀從入棧到出棧的過程。

局部變量表: 存放了編譯期可知的各種類型,對象引用,返回地址值

3 本地方法棧

與虛擬機棧發(fā)揮的作用非常相似,區(qū)別是一個為虛擬機執(zhí)行的java提供服務,一個位本地方法native服務。
Sun HotSport 虛擬機將二者合并為一個棧。

4 java 堆:java虛擬機管理的內(nèi)存中最大的一塊區(qū)域,gc的主要區(qū)域

JIT編譯器
逃逸分析
棧分配和標量替換

5 方法區(qū) 各個線程共享的區(qū)域

用于存儲已經(jīng)被虛擬機加載的類信息,常量,靜態(tài)變量,即時編譯器后的代碼數(shù)據(jù)。
虛擬機把方法區(qū)描述為堆中的一個邏輯部分;

6 運行時常量池

屬于方法區(qū)的一部分,必然受方法區(qū)內(nèi)存的限制,超出則拋出OutOfMemoryError異常。

直接內(nèi)存:

NIO:基于通道和緩沖區(qū)的I/O方式,可以使用native函數(shù)直接分配堆外內(nèi)存,顯著提升了性能,不受jvm內(nèi)存限制,但受到本機總內(nèi)存的限制,超出同樣會拋出OutOfMemoryError異常。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • JVM內(nèi)存模型Java虛擬機(Java Virtual Machine=JVM)的內(nèi)存空間分為五個部分,分別是: ...
    光劍書架上的書閱讀 2,783評論 2 26
  • 從三月份找實習到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,873評論 11 349
  • 文:清藍 1 我有個小侄女,在讀初中,前幾天吵著要她媽帶她去整容,差點沒把她媽嚇個半死。 因為她覺得她的臉太圓...
    作者清藍閱讀 656評論 0 8
  • 我放棄認為自己沒有價值的信條。我值得擁有最好的生活,現(xiàn)在我允許自己接受它,我愿意丟棄舊的信念來創(chuàng)造新的環(huán)境。
    誠love閱讀 296評論 0 0
  • 什么是矯情?有人說我矯情的時候,我不懂它的意思,但知道不是個好詞。 不記得誰這樣說過我,應該不止一個人認為我是個矯...
    雪之心閱讀 240評論 0 0

友情鏈接更多精彩內(nèi)容