JVM的初識

最近感覺自己的腳步跟不上自己的思想,可能自己有些浮了。所以想靜下來鞏固自己學(xué)習(xí)的一些基礎(chǔ)知識。


JVM的基礎(chǔ)架構(gòu)圖(初次畫圖):


我們今天主要就是說明內(nèi)存區(qū)域區(qū)域是如何對應(yīng)我們代碼。簡單的一個例子,

public static void main(String[] args) {

Student stu=new Student();

}

首先代碼會被加載到方法區(qū)(main方法),然后new Student()則會被分配到堆內(nèi)存中,再然后stu引用Student這個對象則會分配到棧中。計算器的功能則是負(fù)責(zé)代碼是如何一步步運(yùn)行的(個人理解)。


重點(diǎn)來了解一下JVM中的堆內(nèi)存的結(jié)構(gòu)??截惗垐D


jdk1.7


jdk1.8

從上面的圖中我們可以很清晰的看出堆內(nèi)存劃分的規(guī)則,Young Gen我們稱之的年輕代,被劃分三塊,Eden、S0、S1。Old Memory我們稱之老年代,加上我們稱之永久代的區(qū)域Perm(jdk1.8之后就不存在,只有元空間,使用堆外內(nèi)存)。

我們new的對象是如何在這個區(qū)域執(zhí)行流轉(zhuǎn)?我們大概的流程說明一下,Object--->Eden隨著Eden的對象越來越多,就會將Eden的一直常駐對象轉(zhuǎn)移到S0區(qū)域(minor GC),隨之S0區(qū)域中也慢慢裝下的時候,也會將一些不用的對象清除并轉(zhuǎn)移剩下的對象到S1區(qū)域。在這個過程中,有些對象可能就一直在Young區(qū)域中我們就會將其轉(zhuǎn)移到Old區(qū)域中。隨著old區(qū)域也慢慢的裝不下的時候,就會發(fā)生major GC。

(僅作為自己的學(xué)習(xí)總結(jié),如果有不對的地方也歡迎大家的指正。)

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

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,687評論 18 399
  • jvm原理 Java虛擬機(jī)是整個java平臺的基石,是java技術(shù)實現(xiàn)硬件無關(guān)和操作系統(tǒng)無關(guān)的關(guān)鍵環(huán)節(jié),是java...
    AI喬治閱讀 17,561評論 21 486
  • 轉(zhuǎn)載blog.csdn.net/ning109314/article/details/10411495/ JVM工...
    forever_smile閱讀 5,507評論 1 56
  • jvm:Java Virtual Machine(Java虛擬機(jī)的縮寫)是java實現(xiàn)跨平臺的核心支持,鏈接硬件和...
    4ea0af17fd67閱讀 708評論 0 0
  • 海浪拍打著岸邊,海水沖刷著岸沙,岸沙溫柔輕浮著腳面,腳心感受著岸沙的清涼,新婚的一對迎著早晨的陽光,甜蜜幸福含在年...
    AA陽光燦爛閱讀 130評論 0 2

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