2014-01-09 76 views
1

假設我定義了一個新類,比如PhoneBook。 我做到以下幾點:Java和內存中的指針

Phonebook x = new Phonebook() 
Phonebook x1=x 
Phonebook x2=x 
... 
Phonebook x99 =x 

那麼這將不消耗將它,因爲所有的100個變量都指向相同的電話簿多大的內存?

謝謝

+2

當然,這也意味着你只有在電話簿上,並且對它所做的任何修改都將通過任何指針「看到」。人們經常犯的錯誤是用指向同一對象的指針填充數組或列表,並期望(錯誤地)爲每個數組條目重複該對象。 –

回答

5

正確。每個引用都會佔用少量內存(通常是32或64位系統上的4或8個字節),就是這樣。

-1

確實是這樣,你也可以來我的博客Reference

真正消耗內存是你第一次new電話簿,和ReferencePhonebook其餘的消耗差不多4個字節每個。

+0

在我的回答中是否有任何問題? – Rugal

+0

這可能是因爲:a)它大多隻是一個鏈接到在指南中不受歡迎的場外參考(儘管你也有一個簡要的答案,所以在這種情況下也不錯)和b)在64位它將消耗每個8字節 –

+0

@TimB明白了,這真的指導我未來的行動,我會遵循SOF的指導方針。 THX的解釋! – Rugal

0

如果這些是局部變量,它們不會消耗堆中的任何內存,因爲它們處於堆棧上。 Java指針的大小通常是JVM實現特有的32位。