JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

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

wys521 2025-02-11 13:54:01 精选教程 21 ℃ 0 评论

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

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

计算java对象所占内存大小

1.使用jdk8自带API

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


System.setProperty("java.vm.name","Java HotSpot(TM) ");

System.out.println(ObjectSizeCalculator.getObjectSize(3L));复制

结果如下:

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

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

先引入maven坐标




org.apache.lucene

lucene-core

4.0.0





org.apache.commons

commons-lang3

3.12.0

复制

测试代码:


Map 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));复制

结果如下:

3. 借助jol工具类

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

先导入maven坐标




org.openjdk.jol

jol-core

0.9

复制

测试代码:


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

结果如下:

4.java对象内存分布

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

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

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

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表