据我所知,众所周知的Instrumentation Java方法无法正确计算对象的深度。
是否有可靠的方法在JVM上计算对象的正确深度?
我正在考虑的用例是固定(或上限)内存大小数据结构,即缓存。
注意:我希望尽可能采用企业级解决方案,因此要么是“标准”编码实践,要么是经过良好测试的库
答案 0 :(得分:0)
我知道众所周知的Instrumentation Java方法无法正确计算对象的深度大小。
仅使用仪器,没有。
通过检测以及如何布置特定JVM的内存的知识将给出您使用的字节数。它不会告诉您其他JVM如何工作,也不会告诉您共享多少数据。
是否有可靠的方法在JVM上计算对象的正确深度?
我使用的是探查器,但除非你相信你使用的某些工具,否则你永远不会知道。
我正在考虑的用例是固定(或上限)内存大小数据结构,即缓存。
您愿意为缓存精确内存使用缓存的速度有多慢?如果速度慢10倍或100倍但使用非常准确,这比只计算元素数量的东西要好吗?
所以要么是“标准”编码实践,要么是经过良好测试的库
在这种情况下,请使用元素计数。您可以使用LinkedHashMap或ehcache。