如何计算java对象的大小?
1预估一个对象的大小
首先看下基础类型的大小
所有对象的都是继承object对象,看下object对象的大小:
4byte+8byte。4byte是 Java栈中保存引用的所需要的空间。而那8byte则是Java堆中对象的信息。
有了Object对象的大小,我们就可以计算其他对象的大小了。
Class NewObject {
int count;
boolean flag;
Object ob;
}
其大小为:空对象大小(8byte)+int大小(4byte)+Boolean大小(1byte)+空Object引用的大小 (4byte)=17byte。但是因为Java在对对象内存分配时都是以8的整数倍来分,因此大于17byte的最接 近8的整数倍的是24,因此此对象的大小约为24byte。
2 计算一个对象的大小
// 计算指定对象本身在堆空间的大小,单位字节
long RamUsageEstimator.shallowSizeOf(Object obj)
// 计算指定对象及其引用树上的所有对象的综合大小,返回可读的结果,如:2KB
String RamUsageEstimator.humanSizeOf(Object obj)