• 4种方法教你如何查看java对象所占内存大小


    摘要:本文讲述4种查看java对象所占内存大小的方法

    本文分享自华为云社区《查看java对象所占内存大小》,作者:xiewenci。

    计算java对象所占内存大小

    1.使用jdk8自带API

    使用这种jdk8方式时,Open JDK 不是天然支持的,需要set一下环境变量

    1. System.setProperty("java.vm.name","Java HotSpot(TM) ");
    2. System.out.println(ObjectSizeCalculator.getObjectSize(3L));

    结果如下:

    2. 借助org.apache.lucene工具类

    当一个对象有多个属性,需要计算整个对象的大小时,可以借助org.apache.lucene工具类

    先引入maven坐标

    1. <dependency>
    2. <groupId>org.apache.lucene</groupId>
    3. <artifactId>lucene-core</artifactId>
    4. <version>4.0.0</version>
    5. </dependency>
    6. <dependency>
    7. <groupId>org.apache.commons</groupId>
    8. <artifactId>commons-lang3</artifactId>
    9. <version>3.12.0</version>
    10. </dependency>

    测试代码:

    1. Map<String, String> map = new HashMap<>();
    2. System.out.println("map init value is " + RamUsageEstimator.sizeOf(map));
    3. for (int i = 0; i < 100; i++) {
    4. RandomStringUtils.randomAlphanumeric(100);
    5. map.put(RandomStringUtils.randomAlphanumeric(10), RandomStringUtils.randomAlphanumeric(10));
    6. }
    7. System.out.println("map size 100, value is " + RamUsageEstimator.sizeOf(map));
    8. System.out.println("map size 100, value is " + RamUsageEstimator.humanSizeOf(map));

    结果如下:

    3. 借助jol工具类

    如果需要查看某个对象的详细内存分布,可以借助jol工具类,不过这种当对象中内嵌其他对象时,只能计算ClassLayout方法中这个object对象所占内存的大小

    先导入maven坐标

    1. <dependency>
    2. <groupId>org.openjdk.jol</groupId>
    3. <artifactId>jol-core</artifactId>
    4. <version>0.9</version>
    5. </dependency>

    测试代码:

    System.out.println(ClassLayout.parseInstance(23L).toPrintable());

    结果如下:

    4. java对象内存分布

    最后,计算一个对象占用多大内存,需要提前了解java对象的布局。

    点击关注,第一时间了解华为云新鲜技术~

  • 相关阅读:
    光学知识整理-偏振光
    基于深度学习的图像去雾
    Hive(12):Hive的函数之自定义函数
    在python程序中用windows的icon
    局域网特性的三要素及协议介绍
    omnipathr官网教程 mistr
    yolov4 预测框解码详解【附代码】
    Unity_相机灵活跟随角色移动
    艾美捷彗星检测试剂盒(单细胞凝胶电泳)化验原理及研究
    Ubuntu中关闭防火墙
  • 原文地址:https://blog.csdn.net/devcloud/article/details/125483921