1

我正在使用对内存使用大小有限制的 lru 缓存。lru 缓存包括两种数据结构:hashmap 和链表。哈希映射保存缓存对象,链表保存缓存对象访问顺序的记录。为了确定 java 对象的内存使用情况,我使用了一个开源工具——Classmexer 代理,它是一个简单的 Java 检测代理,位于http://www.javamex.com/classmexer/

我在http://sizeof.sourceforge.net/尝试了另一个名为 SizeOf 的工具。

问题是性能非常昂贵。测量对象大小的一项操作的时间成本约为 1.3 秒,非常缓慢。这可以使缓存的好处为零。

是否有任何其他解决方案来测量 Java 对象的内存大小?

谢谢。

4

3 回答 3

1

获得准确的字节值会很昂贵,因为它需要使用反射来获得嵌套大小,但可以做到。

在 Java 中,确定对象大小的最佳方法是什么?

http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/Instrumentation.html

于 2012-01-23T16:40:35.417 回答
0

既然您已经有了一个工具可以做到这一点……现实情况是,在 Java 中没有快速的方法可以做到这一点。

于 2012-01-23T17:23:26.147 回答
0

Look at this: How to calculate the memory usage of a Java array Maybe it helps you in the analysis.

于 2012-01-23T16:21:48.983 回答