2012-06-13 44 views
7

我正在學習java,並且我記得在某處讀到java對象時,在JVM內部有一些開銷,這是由虛擬機管理的原因。所以我的問題是,有人能告訴我是否以及如何在HotSpot JVM中獲取對象的總大小以及可能帶來的任何開銷?瞭解JVM中的對象開銷

+0

的可能重複中提到的值[Java中對象的內存消耗是多少?](http://stackoverflow.com/questions/258120/what-is-the-memory-cons在java中使用對象) –

+0

你看過http://stackoverflow.com/questions/258120/what-is-the-memory-consumption-of-an-object-in-java ? –

+0

我不完全問同樣的事情。我問的是開銷和總大小,所以我可以根據總大小得出開銷的百分比。 – NlightNFotis

回答

9

你不能直接得到開銷。開銷的大小取決於實現,可能因許多因素而異(例如精確的JVM版本,以及您是否在32位或64位JVM上)。

然而,假設在像HotSpot這樣典型的現代JVM實現中,每個對象的開銷是在8和16字節之間是合理安全的。數組的開銷通常比其他對象大4個字節(包含整數數組長度)。

參見:

1

我發現this article相當翔實的,雖然我有一些懷疑的一些表

+0

請注意,只包含鏈接的答案通常是不鼓勵的;見http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers。也許你可以總結文章的相關部分。 – sleske