關於new Object的探究

擊水三千里發表於2019-03-19

問題1:java中的引用型別的物件存放在哪裡

根據上下文來確定。
比如
void func()
{
    Object obj = new Object();//這個obj在函式的棧裡。
}

class Test
{
   private Object obj = new Object();//這個obj隨對應的Test物件分配在堆裡
}

 

對於方法中的區域性變數的引用時存放在java執行時資料區的棧中,對於例項變數則是存放在java執行時資料區的堆中

 

問題2:new一個Object物件到底佔用多少記憶體呢( Object obj = new Object() )?

如果JDK64位,8位元組是引用,16位元組是堆記憶體(物件頭大小),總共是8+16=24位元組,所以new一個Object物件佔用8+16=24位元組。

如果JDK是32位,按如上分析方法可知new一個Object物件佔用4+8=12位元組

相關文章