2012-07-30 26 views
5

我在獲取JVM中對象的大小時遇到​​了一些問題。 JDK 5提供的接口Instrumentation通過premain()函數來計算,但我不知道如何使用它。JVM getObjectSize示例

任何人都可以幫助我嗎?

+1

你很可能會發現使用內存分析器是一個更簡單的方法來做到這一點(這是它的目的) – 2012-07-30 10:11:16

回答

9

最簡單,最有效的解決方案是使用非常小的的sizeof

<dependency> 
    <groupId>com.carrotsearch</groupId> 
    <artifactId>java-sizeof</artifactId> 
    <version>0.0.3</version> 
</dependency> 

您需要使用此http://grepcode.com/file/repo1.maven.org/maven2/com.carrotsearch/java-sizeof/0.0.2/com/carrotsearch/sizeof/RamUsageEstimator.java?av=f

shallowSizeOf()方法或整型尺寸()

這是我迄今爲止在這個主題上發現的最簡單快速的解決方案...

+2

這是從這個庫的作者的演示文稿:http://www.slideshare.net/DawidWeiss /sizeofobject-how-much-memory-objects-take-on-jvms-and-when-this-may-matter?ref=http://cheremin.blogspot.com/2012/05/how-much-memory-objects -take-on-jvm-and.html – 2012-07-30 11:56:39

+1

來源地址:https://github.com/dweiss/java-sizeof – 2012-07-30 11:57:06

+0

謝謝你的工作 – fleture 2012-07-31 02:42:15

0

你可能會發現使用MemoryMeasurer library,這包簡單的存儲測量到一個相對簡單的API。 (或者,你可以看看它的源代碼,看看它是如何使用的儀器。)

1

另一個可以幫助您的開源項目是Jamm,它也使用JVM代理。