可能重複:
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上運行?
可能重複:
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上運行?
不,JVM不適用於傳統方式。對象初始化總是對象圖。
但是您可以使用ObjectOutputStream將該實例導出到FileOutputStream。
參見:http://www.javaworld.com/javaworld/javatips/jw-javatip130.html
整數在ObjectOutputStream中使用82個字節,兩個整數使用92個字節。實際上,Integer使用16-24個字節的內存(取決於您是否使用64位引用) –
我在迴應關於對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
你見過這個? http://stackoverflow.com/questions/52353/in-java-what-is-the-best-way-to-determine-the-size-of-an-object – greenLizard
最好的方法來確定如何你使用的很多內存是使用一個分析器。不用擔心你使用了多少字節,你可以擔心內存的價值。即它可能不值得你的時間擔心。 http://vanillajava.blogspot.com/2011/11/ever-decreasing-cost-of-main-memory.html –