Java內(nèi)存模型簡述


  • 程序計數(shù)器(記錄代碼指令地址)
  • Java虛擬機(jī)棧(記錄Java方法執(zhí)行時信息)
  • 本地方法棧(記錄Native方法執(zhí)行時信息)
  • 方法區(qū)(記錄類信息,常量,靜態(tài)變量)
  • Java堆(用于對象實例化內(nèi)存分配)

1.程序計數(shù)器

  • 記錄當(dāng)前線程執(zhí)行的字節(jié)碼指令地址
  • 線程隔離(及線程私有,每個線程都有一個程序計數(shù)器)
  • 如當(dāng)前執(zhí)行native方法,則計數(shù)器值為空
  • 不會拋出OutOfMemory(虛擬機(jī)規(guī)范中無規(guī)定)
  • 字節(jié)碼解釋器通過改變程序計數(shù)器的值來選去下一條指令

2.Java虛擬機(jī)棧

  • Java方法執(zhí)行的內(nèi)存模型(一個方法開始執(zhí)行時,會創(chuàng)建一個棧幀,用來存儲該方法的各種信息,并把棧幀push入棧,在方法執(zhí)行完成之后,把棧幀pop出棧)
  • 線程隔離且生命周期與線程相同
  • 會拋出StackOverflow(因為每執(zhí)行一個方法都會產(chǎn)生一個棧幀入棧,所以調(diào)用遞歸方法時會比較容易拋出該異常)
  • 會拋出OutOfMemory

3.本地方法棧

  • 用于Native方法(作用同Java虛擬機(jī)棧)
  • 對語言,使用方式,數(shù)據(jù)結(jié)構(gòu)無限制(所以不一定只能用C和C++,理論上說還可以用Python,甚至Js?)
  • 線程隔離且生命周期與線程相同
  • 會拋出StackOverflow和OutOfMemory

4.方法區(qū)

  • 記錄類加載信息,常量,靜態(tài)變量等數(shù)據(jù)
  • 推薦實現(xiàn)垃圾回收(類型的卸載,常量的回收,可以不實現(xiàn))
  • 線程共享
  • 會拋出OutOfMemory

5.Java堆

  • 對象實例的內(nèi)存分配(幾乎所有對象,但并不絕對)
  • 需要實現(xiàn)垃圾回收(該區(qū)域為垃圾回收主要區(qū)域)
  • 線程共享
  • 劃分為多個區(qū)域(以適應(yīng)垃圾回收機(jī)制的優(yōu)化)
  • 會拋出OutOfMemory

補充

  • Java虛擬機(jī)棧中的棧幀:存儲存儲局部變量表,操作數(shù)棧,動態(tài)鏈接,方法出口等信息
  • 局部變量表:存儲基本數(shù)據(jù)類型,對象引用和一條字節(jié)碼指令地址returnAddress
  • 操作數(shù)棧:Java虛擬機(jī)的解釋執(zhí)行引擎基于操作數(shù)棧,如某個指令將從棧中pop操作數(shù),執(zhí)行運算,再將結(jié)果push入棧。
  • 對象引用:可能是一個指向?qū)ο笃鹗嫉刂返闹羔樆蚴谴韺ο蟮木浔蚴瞧渌c此對象相關(guān)的位置
  • 運行時常量池:方法區(qū)中的一個區(qū)域,保存class文件中的符號引用和翻譯出來的直接引用

對于讀《深入理解Java虛擬機(jī)》中內(nèi)存區(qū)域的一個簡單的了解總結(jié)。如有錯誤請指出。

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

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

  • JVM內(nèi)存模型Java虛擬機(jī)(Java Virtual Machine=JVM)的內(nèi)存空間分為五個部分,分別是: ...
    光劍書架上的書閱讀 2,775評論 2 26
  • 從三月份找實習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍(lán)閱讀 42,801評論 11 349
  • 寫在前面本文介紹的Java虛擬機(jī)(JVM)的自動內(nèi)存管理機(jī)制主要是參照《深入理解Java虛擬機(jī)》(第2版)一書中的...
    EakonZhao閱讀 4,473評論 5 48
  • 看一本好書的感覺就像夏天里喝上一杯冰水,好爽! 我可以一口氣讀完,好像這本書時為我寫的,或者是說為我這一類人寫的,...
    舒瀾小筑閱讀 209評論 0 0
  • 天和元年,軒轅王朝的淑妃病入膏肓。 深夜一陣微風(fēng)拂來,攜來淡淡的曇花香,室內(nèi)一片寂靜。 突然病榻前出現(xiàn)一女子,深深...
    流鳶yl閱讀 483評論 0 1

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