如何计算java对象所占内存的大小

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

计算java对象所占内存大小

1.使用jdk8自带API

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

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

结果如下:

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

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

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

先引入maven坐标

<dependency><groupId>org.apache.lucene</groupId><artifactId>lucene-core</artifactId><version>4.0.0</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version></dependency>复制

测试代码:

Map<String, String> map = new HashMap<>();System.out.println("map init value is " + RamUsageEstimator.sizeOf(map));for (int i = 0; i < 100; i++) {RandomStringUtils.randomAlphanumeric(100);map.put(RandomStringUtils.randomAlphanumeric(10), RandomStringUtils.randomAlphanumeric(10));}System.out.println("map size 100, value is " + RamUsageEstimator.sizeOf(map));System.out.println("map size 100, value is " + RamUsageEstimator.humanSizeOf(map));复制

结果如下:

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

3. 借助jol工具类

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

先导入maven坐标

<dependency><groupId>org.openjdk.jol</groupId><artifactId>jol-core</artifactId><version>0.9</version></dependency>复制

测试代码:

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

结果如下:

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

4.java对象内存分布

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

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

华为云博客_大数据博客_AI博客_云计算博客_开发者中心-华为云

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com

(0)
上一篇 2023年 7月 22日 上午9:03
下一篇 2023年 7月 22日 上午9:09

相关推荐

  • 微信的钱提现到银行卡如何免手续

    微信提现怎样才能免手续费,相信很多朋友啊都不知道!我们在使用微信提现的时候啊,经常会发现我们把微信钱包里面的钱,提现到银行卡的时候啊,都需要收取1%的手续费,也就是说提现100块钱…

    2023年 5月 27日
  • 武汉公布新冠肺炎社会捐赠方式,新冠肺炎全国捐赠省份排名

    武汉市新冠肺炎疫情发生以来,社会各界非常关心和支持,体现了社会大爱和守望相助的精神。为进一步做好社会捐赠工作,现将有关事项公告如下: 一、接受捐赠主体 1.武汉市慈善总会负责接受捐…

    互联网 2023年 2月 12日
  • 常见招聘的6个渠道,人力招聘渠道怎么找

    招聘难,常见的招聘渠道分享给大家。 1、 网络招聘:原来的58同城 、智联 、前程,最近两年比如BOSS直聘,直接面向小微企业,让应聘者和老板直接面对面,再比如拉钩网,主要针对互联…

    2023年 5月 31日
  • nas一般来干什么用,nas的7大问题解答

    这台黑色的设备是我DIY的NAS 里面可以运行opnewrt、deepin(Linux)、home assistant还有web网页今天借着给NAS新增硬盘的机会聊聊NAS是什么?…

    2023年 7月 11日
  • qq自动回复又有新款了,qq自动回复的真正意义是什么

    对不起,村里还没通网呢,请直接打电话。 如果你设置了这样的自动回复,对方看到一定会笑掉大牙,对方也不会相信,毕竟现在应该没有地方,没有通网络吧。如果这个人真的信任你所说的话,那么也…

    2023年 3月 19日
  • 如何在图片上添加文字和图片

    不知道大家会不会跟我有一样的想法,不管是精心调整角度拍摄的图片,还是随手一拍的图片,都会添加一些有趣可爱的贴纸文字进去。如果照片内容比较空乏,增加一些贴纸文字会增添图片的趣味性,让…

    2022年 12月 19日
  • 新qq号怎么设置密码,新QQ号码设置密保问题方法教程

    相信不少朋友都有QQ被盗的经历,被盗后Q币Q点被消费,辛苦打的游戏装备也被没了….却只能“自认倒霉”。 正所谓不怕一万,只怕万一,为了防止被盗号,必须要做好保护措施!今…

    2023年 4月 13日
  • 网站建设报价怎么差别那么大

    昨天跟一个客户沟通说, 先解答一个问题: 为什么我咨询了这么多做网站公司, 各个网站建设公司报价差距这么大? 问得好! 这是让很多客户懵逼的事情, 说简单,很简单; 说复杂,很复杂…

    互联网 2023年 4月 19日
  • 休息五分钟 就能恢复注意力吗(注意力可以维持几分钟)

    澳大利亚悉尼大学的教育心理学家发现,只需要休息5分钟就能恢复注意力。 发表在《教育与发展心理学家》上的这项研究成果认为,短暂的休息是值得的,它能帮助学生更好地集中注意力和更有效地学…

    互联网 2023年 9月 4日
  • 宽带连接错误651故障排除方法

    在使用拨号连接上网的时候,往往出现故障的时候会出现各种宽带连接错误代码提示,一把我们可以通过这些错误的宽带连接错误提示找到导致的宽带问题,由于宽带连接错误提示也比较多,下面本文于大…

    互联网 2023年 5月 27日