今天開始學習JVM
?
先看看運行時數(shù)據(jù)區(qū)的結構:
?
程序計數(shù)器: 當前線程所執(zhí)行的字節(jié)碼的行號指示器。(線程私有)
java虛擬機棧 :java方法執(zhí)行的內存模型:每個方法被執(zhí)行的時候都會同時創(chuàng)建一個棧幀(Stack Frame)用語存儲局部變量表、操作數(shù)棧、動態(tài)鏈表、方法出入口等信息。每個方法被調用直至執(zhí)行完成的過程,就對應著一個棧幀在虛擬機中從入棧到出棧的過程。
本地方法棧: 為虛擬機使用到的Native方法服務,功能與java虛擬器棧相同,對于Sun HotSpot虛擬機,直接把本地方法棧和虛擬機棧合二為一。
java堆 :被所有線程共享,在虛擬器啟動時創(chuàng)建,用來存放對象實例。
方法區(qū) :用于存儲被虛擬機加載的類信息、常量、靜態(tài)變量、即時編譯器編譯后的代碼等數(shù)據(jù)。
運行時常量池 :是方法區(qū)的一部分,用于存放編譯期生成的各種字面量和符號引用,這部分內容將在類加載后存放到方法區(qū)的運行時常量池中。
?
下面舉例說明類加載時所涉及的區(qū)域:
?
Object obj = new Object();
?Object obj 這部分語義將會反映到Java棧的本地變量表中,而new Object()這部分的語義將反映到Java堆中,另外,在Java堆中還必須包含能查找到此對象類型數(shù)據(jù)的地址信息,這些類型數(shù)據(jù)則存儲在方法區(qū)中。
?
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
