1.引入maven依赖
<dependency>
<groupId>org.openjdk.jol</groupId>
<artifactId>jol-core</artifactId>
<version>0.9</version>
</dependency>
2.查看实体占用内存大小
public static void main(String[] args) {
CustDetailInfo obj = assembleCustDetail(custSplit);
System.out.println(ClassLayout.parseInstance(obj).toPrintable());
//查看对象内部信息
System.out.println(ClassLayout.parseInstance(obj).toPrintable());
//查看对象外部信息
System.out.println(GraphLayout.parseInstance(obj).toPrintable());
//获取对象总大小
System.out.println("size : " + GraphLayout.parseInstance(obj).totalSize());
}
3.查看实体占用内存大小
配置指针压缩参数,对内存对象进行压缩:自定义对象压缩明显,能压缩40%, 默认是对指针进行了压缩
/**
* object header: x86-8 Bytes x64-16 Bytes
* primitive type:
* - boolean-1 Byte
* - byte-1 Byte
* - short-2 Bytes
* - char-2 Bytes
* - int-4 Bytes
* - float-4 Bytes
* - long-8 Bytes
* - double-8 Bytes
* - String-4 Bytes
* reference: x86-4 Bytes x64-8 Bytes
* padding: by 8 Bytes
*/
经测试在64位机子上面,String是4字节,填充是由内填充+扩展填充,一般
内填充是0,扩展填充是4字节