JVM深度内存大小的对象

时间:2014-02-03 18:45:12

标签: java caching memory jvm size

据我所知,众所周知的Instrumentation Java方法无法正确计算对象的深度。

是否有可靠的方法在JVM上计算对象的正确深度?

我正在考虑的用例是固定(或上限)内存大小数据结构,即缓存。

注意:我希望尽可能采用企业级解决方案,因此要么是“标准”编码实践,要么是经过良好测试的库

1 个答案:

答案 0 :(得分:0)

  

我知道众所周知的Instrumentation Java方法无法正确计算对象的深度大小。

仅使用仪器,没有。

通过检测以及如何布置特定JVM的内存的知识将给出您使用的字节数。它不会告诉您其他JVM如何工作,也不会告诉您共享多少数据。

  

是否有可靠的方法在JVM上计算对象的正确深度?

我使用的是探查器,但除非你相信你使用的某些工具,否则你永远不会知道。

  

我正在考虑的用例是固定(或上限)内存大小数据结构,即缓存。

您愿意为缓存精确内存使用缓存的速度有多慢?如果速度慢10倍或100倍但使用非常准确,这比只计算元素数量的东西要好吗?

  

所以要么是“标准”编码实践,要么是经过良好测试的库

在这种情况下,请使用元素计数。您可以使用LinkedHashMap或ehcache。