2011-12-07 119 views
0

可能重複:
In Java, what is the best way to determine the size of an object?的java對象大小

有沒有辦法找到任何Java對象使用多少內存? e.g:考慮以下級

class A { 
    byte b; 
} 

我什麼時候:new A(),多少內存使用,假設我們在64位JVM上運行?

+2

我在迴應關於對JRuby和內存佔用的問題,而是你應該看看與jHat,JMAP和VisualVM的。所有這些都是JDK附帶的工具。 http://stackoverflow.com/questions/8327049/how-to-get-the-ram-footprint-of-a-specific-object-in-jruby/8327971#8327971 – buruzaemon

+0

你見過這個? http://stackoverflow.com/questions/52353/in-java-what-is-the-best-way-to-determine-the-size-of-an-object – greenLizard

+0

最好的方法來確定如何你使用的很多內存是使用一個分析器。不用擔心你使用了多少字節,你可以擔心內存的價值。即它可能不值得你的時間擔心。 http://vanillajava.blogspot.com/2011/11/ever-decreasing-cost-of-main-memory.html –

回答

0

不,JVM不適用於傳統方式。對象初始化總是對象圖。

但是您可以使用ObjectOutputStream將該實例導出到FileOutputStream。

參見:http://www.javaworld.com/javaworld/javatips/jw-javatip130.html

+0

整數在ObjectOutputStream中使用82個字節,兩個整數使用92個字節。實際上,Integer使用16-24個字節的內存(取決於您是否使用64位引用) –