6

我在获取 JVM 中对象的大小时遇到​​了一些麻烦。JDK 5 提供了一个Instrumentation通过premain()函数计算的接口,但我不知道如何使用它。

有谁能够帮助我?

4

4 回答 4

11

最简单和最有效的解决方案是使用非常小的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()方法或sizeOf()

到目前为止,这确实是我在这个主题上找到的最简单的快速解决方案......

于 2012-07-30T10:16:35.707 回答
1

另一个可能对您有所帮助的开源项目是Jamm,它也使用了 JVM 代理。

于 2012-07-30T10:37:46.357 回答
0

在这里,我们有一篇非常好的达斯汀马克思的文章,我可以参考你。

http://java.dzone.com/articles/estimating-java-object-sizes

于 2012-07-30T09:50:37.173 回答
0

您可能会发现使用MemoryMeasurer 库很有帮助,它将简单的内存测量打包到一个相对简单的 API 中。(或者,您可以查看它的源代码以了解它如何使用检测。)

于 2012-07-30T10:02:23.013 回答