如何计算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

相关推荐

  • 怎么设置支付宝里面的手势密码,支付宝收付款手势密码怎么设置

    自从2004年推出以来,已经历经几十次的更新换代,每次更新或多或少的都会对软件的部分功能设置产生不小的影响,作为一款大家比较常用第三方支付软件,功能的变动势必会影响到很多朋友,比如…

    2023年 9月 21日
  • 腾讯十八岁之前可以全部退款吗

    眼见他 起高楼 如果今天你打开 QQ,会看到这么一张首屏。 QQ十八岁了 差评君先是一愣,后来叹了一声,都过去这么久了啊,想想自己注册 QQ 号的时候,还是个小屁孩呢。。。 今天跟…

    2023年 8月 30日
  • 服务器托管机房 中国电信

      美国作为全球互联网中心的发源地,网络技术能力不可被低估。通常情况下,美国服务器机房从设计布局到安全可靠的一套系统(防火、防震、温湿度、电源供电量)等都有专业严格的标准,管理完善…

    2023年 4月 29日
  • 如何删除电脑右下角广告弹幕

    “精选好物”、”主题活动“、“360推荐”、”焦点资讯“、”今日精选“、“每日热点”、“今日趣看”、“个性化广告推荐” 教你一次性去除 我们在使用电脑过程中,电脑右下角经常弹出一些…

    2023年 9月 10日
  • 华为交换机链路聚合配置命令

    distributing 英 [dɪˈstrɪbjuːtɪŋ] v.分发;分配;分销;使散开;使分布;分散 Aggregation 英 [ˌæɡrɪˈɡeɪʃn] 聚类;汇聚;数据…

    2023年 7月 1日
  • pandownload违法案例

    百度云网盘的确是网盘界的大佬了,但正是因为其开始以身份自傲,对用户限速如今也遭遇上了“垄断”骂名。而网民们对于百度网盘的群愤正因“Pandownload遭禁”一事愈发激烈,甚至开始…

    2023年 10月 12日
  • 云顶之弈手游美测试服教程

    首先是云顶之弈手游,云顶当然是可以玩手游的,手游没有国服,只有外服,所以你只能去日服、台服、澳服、美服等地区玩,玩需要注册外服的账号,注册需要FQ,这个对很多人比较麻烦,可以找会F…

    2023年 6月 7日
  • 链家app的几项常用功能

    链家APP通过较为严格和规范的管理,保证了房源较好的真实性,其APP成为了众多看房客首选的工具,让客户第一时间了解每一个片区、楼盘的市场行情,吸引了不少的流量(虽然最后成交不一定在…

    2023年 11月 8日
  • gif动图太大怎么压缩变小,gif动图太大怎样压缩

    不知道大家平时遇到好玩的表情包动图或者是搞笑GIF图片时会不会将它保存下来,我就很喜欢保存各种各样的GIF图片,一张GIF图片随随便便就有10-20兆大,时间一长内存就不够了,然后…

    2023年 4月 12日
  • 华为手机网络卡顿怎么解决,网络卡顿怎么解决呢

    很多朋友在使用家庭网络时,发现网络总是卡顿,但又不知道是什么原因造成的,本期文章就来说说遇到网络卡顿的情况,该如何解决它。 一、联系网络运营商 要知道宽带是需要付费才可以正常使用的…

    2023年 7月 16日