下圖是JAVA虛擬機對象的創建過程:
現在我們就以下幾點說明對象的創建:
1、給對象分配內存
給對象分配內存有指針碰撞和空閒列表兩種方式。具體描述如下圖所示。按時
2、線程安全性問題
無論是指針碰撞還是空閒列表,在高併發情況下都有可能存在線程安全性問題。解決方案如下:
1、加同步鎖。
安全但是執行效率低。
2、本地線程分配緩衝
針對每個線程,給其在堆內存中單獨分配一塊區域,每個線程只能使用分配給自己的區域。我們稱之爲本地線程分配緩衝(Thread Local Aollocation Buffer )。
3、初始化對象
初始化對象頭信息。
4、執行構造方法