2012-07-30 68 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代理。