使用RamUsageEstimator计算对象占用堆的内存大小

maven

<!-- https://mvnrepository.com/artifact/com.carrotsearch/java-sizeof -->
        <dependency>
            <groupId>com.carrotsearch</groupId>
            <artifactId>java-sizeof</artifactId>
            <version>0.0.5</version>
        </dependency>

测试

ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < 1000; i++) {
          
   
            list.add(i);
        }
        //计算指定对象及其引用树上的所有对象的综合大小,返回可读的结果,如:2KB
        System.out.println("humanSizeOf:" + RamUsageEstimator.humanSizeOf(list));
        //计算指定对象本身在堆空间的大小,单位字节
        System.out.println("shallowSizeOf:" + RamUsageEstimator.shallowSizeOf(list));
        //计算指定对象及其引用树上的所有对象的综合大小,单位字节
        System.out.println("sizeOf:" + RamUsageEstimator.sizeOf(list));

输出

humanSizeOf:20.5 KB shallowSizeOf:24 sizeOf:20976

经验分享 程序员 微信小程序 职场和发展