2016-10-01 90 views
4

當創建對象並調用構造函數時,構造函數調用的存儲位置是什麼?它是堆棧還是堆?構造函數調用的存儲位置在哪裏?堆棧還是堆?

+0

有用讀:https://stackoverflow.com/questions/2826222/jvm-heap-and-stack/7597480#7597480 – Dez

+0

調用構造函數就像調用一個稱爲特殊方法''它使用堆棧像任何其他方法。 –

回答

1

堆僅用於存儲對象。沒有辦法在堆上調用構造函數。

它的調用是在堆棧上完成的。

堆棧用於方法調用。它用於創建方法堆棧。儘管構造函數不是一種方法。但是,您總是可以按照任何方法編寫任何邏輯或賦值。所以它像任何其他方法一樣在一個堆棧中實現。

4

構造函數調用的參數和局部變量存儲在堆棧中,直到構造函數返回。

構造函數創建的對象存儲在堆中。


1 - ...除非你有「逃脫分析」啓用,JIT編譯器可以判斷該對象可以在堆棧上安全地分配爲止。

1
在JVM對堆棧和堆

運行時數據區爲如下,

1)堆:存儲區域爲對象(一個每JVM實例)

2)Java堆棧:Storage是用於本地變量,中間操作結果(每個線程一個)