內存佈局

方法區 永久代,共享。類信息,常量,static變量,JIT編譯後的代碼。
運行時常量池:字面量,符號引用。
全部對象(新生代,老年代)
虛擬機棧
線程私有。表示方法執行的內存模型。【局部變量表】
本地方法棧
 
程序計數器
字節碼行號。線程私有。

 


【Object obj = new Object();】 
——Object obj反映到「Java棧」的局部變量表中,做爲一個reference類型數據出現。 
——new Object()這部分的語義反映到Java堆中。造成一塊存儲了Object類型全部實例數據值的結構化內存。 
——另外在Java堆中還必須包含能查找到此對象類型數據(如對象類型、父類、實現的接口、方法等)的地址信息,這些類型數據存儲在方法區中。


【對象的建立】
常量池的符號引用。類加載。分配內存。線程安全TLAB。初始化。

【對象內存佈局】
對象頭:運行時數據 + 類元數據指針。
實例數據:字段。
對齊填充。

【對象的訪問定位】
棧上的reference。
訪問方式:使用句柄,直接指針。

http://blog.csdn.net/wang8118/article/details/45269867
Thread私有:程序計數器,虛擬機棧(棧幀:返回地址,局部變量表,操做數棧,動態連接:指向運行時常量池中該幀所屬方法的引用,運行期間轉化爲直接引用),本地方法棧
方法區


當前方法所在的類的運行時常量池引用
字節碼中的方法調用指令就是以常量池中指向方法的符號引用做爲參數。



【運行時棧幀結構】:方法調用,字節碼執行
線程隔離,當前棧幀安全

相關文章
相關標籤/搜索