# 1 楼答案 这比仅仅使用空闲内存计算(不考虑垃圾收集和其他线程的新分配)要复杂得多。看看: http://www.javaspecialists.eu/archive/Issue142.html 然而,这是先进的东西 编辑 上面的解决方案找到对象的深度大小(使用堆栈遍历参考网络、访问的参考集合,当然还有仪器) 然而,获取对象的浅大小更简单,可以通过Java1.5工具实现,无需额外工作(参见Instrumentation.getObjectSize())
# 2 楼答案 对象占用的内存量因JVM实现的不同而不同,有时因平台的不同而不同 您可以通过计算作为对象类实例变量声明的基元类型和对象引用的数量和大小来估计数量 例如: public class Monkey { int arms; Animal parent; } 。。具有1个对象引用和1个int基元,在32位体系结构上,每个实例大约占用8字节
# 1 楼答案
这比仅仅使用空闲内存计算(不考虑垃圾收集和其他线程的新分配)要复杂得多。看看:
http://www.javaspecialists.eu/archive/Issue142.html
然而,这是先进的东西
编辑
上面的解决方案找到对象的深度大小(使用堆栈遍历参考网络、访问的参考集合,当然还有仪器)
然而,获取对象的浅大小更简单,可以通过Java1.5工具实现,无需额外工作(参见Instrumentation.getObjectSize())
# 2 楼答案
对象占用的内存量因JVM实现的不同而不同,有时因平台的不同而不同
您可以通过计算作为对象类实例变量声明的基元类型和对象引用的数量和大小来估计数量
例如:
。。具有1个对象引用和1个int基元,在32位体系结构上,每个实例大约占用8字节