我正在使用lru缓存,它限制了内存使用量。 lru缓存包括两个数据结构:hashmap和链表。哈希映射保存缓存对象,链表保留缓存对象访问顺序的记录。为了确定java对象的内存使用情况,我使用了一个开源工具 - Classmexer代理 这是http://www.javamex.com/classmexer/上的一个简单的Java检测代理。
我在http://sizeof.sourceforge.net/尝试另一个名为SizeOf的工具。
问题是性能非常昂贵。测量物体尺寸的一次操作的时间成本约为1.3秒,这非常非常慢。这可以使缓存的好处为零。
还有其他解决方案来测量java对象的内存大小吗?
感谢。
答案 0 :(得分:1)
获得准确的字节值将是昂贵的,因为它需要使用反射来获得嵌套大小,但它可以完成。
In Java, what is the best way to determine the size of an object?
http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/Instrumentation.html
答案 1 :(得分:0)
看看这个:How to calculate the memory usage of a Java array也许它可以帮助你进行分析。
答案 2 :(得分:0)
既然你已经拥有了一个可以做到这一点的工具......现实情况是,在Java中没有快速的方法。