2012-09-04 71 views
5

如果我創建一個靜態塊並在那裏創建一個對象,說一些其他類,那麼這個對象會在堆上還是堆棧上創建?內存中的哪些對象位於靜態塊中創建的對象?

class Hello { 
    static { 
     Abc abcObject=new Abc(); 
    } 
    // Other Code... 
} 
+0

這將是堆。 – Santosh

+0

謝謝................. –

+0

歡迎來到Stack Overflow。當有人在這裏幫助你時,習慣上接受一個答案。您可以通過點擊您認爲正確的答案旁邊下方複選標記的大綱來做到這一點。謝謝! –

回答

4

該對象在堆中創建,但該對象的引用位於堆棧中。

您創建的變量abcObject位於堆棧中。這包含存儲在new Abc()對象的堆中的內存地址。

+0

_reference object is in the stack_ can you elaborate/ – Santosh

+0

@Santosh所有本地變量都在堆棧中。 –

+0

唉......知道了。對不起:) – Santosh

7

無論靜態(或)靜態,對象始終在堆上。

參考將在堆棧上。

+0

+1'abcObject'是一個局部變量,它是一個對象的引用。這將在堆棧上。引用的對象將在堆上。 –

+0

@PeterLawrey:同意並更新答案。 – kosa

+0

@ user1646626:不客氣。享受編碼。 – kosa