查看java对象占用内存大小

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字节
posted @ 2021-08-06 14:55  WingYao  阅读(2115)  评论(0编辑  收藏  举报