2014-03-30 53 views
2

我真正想知道的是:假設我會在Java中創建一個名爲「Family」的類,並且每個家庭都會有一些「familyMembers」作爲成員變量,是否會花費更多的內存來聲明每個「家庭成員」他們是什麼「家庭」的一部分?換句話說,史密斯家族有3個成員,爸爸,媽媽和孩子,是否會花費更多的回憶讓家庭「史密斯」成爲每個家庭的成員變量成員:爸爸,媽媽和孩子?Java:更多地引用一個變量會花費更多的內存嗎?

+2

這不是很清楚;你能提供一些代碼片段來說明你在說什麼嗎? –

+0

提供代碼快照將更好地解釋probkem –

+1

是的,類中的任何新(非靜態)對象引用都需要額外的4個字節。 – spectre

回答

1

一切都花費一些東西。如果添加另一個類變量,它將以兩種方式付費。首先加載類中的一些字節,然後爲每個引用添加另外4個字節。 這是因爲你的類定義必須加載到內存中(永久的,permgen空間),因爲每個引用在你的堆棧中是唯一的,每個引用4個字節。

0

除非使用new關鍵字或原語類型,則僅使用存儲參考

+1

不要忘記原始人! – Tyler

+0

沒關係,所以每個參考都花費一點內存?這是否意味着增加更多的家庭成員,並因此更多地提及「史密斯」家庭,會花費更多的記憶? – Ushwald

+1

@Ushwald:每個三明治花費5美元。這是否意味着購買更多的三明治會花費更多的錢? –

0

是,參考到家庭,存儲在家庭成員時,增加一個家庭成員的實例大小所需的存儲器由參考大小決定。

請注意,實際上,這並不一定意味着更多的內存消耗,因爲Java VM使用了各種內存管理技術。

相關問題