摘要:本文讲述4种查看java对象所占内存大小的方法计算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坐标
【如何计算java对象所占内存的大小】
<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));复制结果如下:
文章插图
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对象内存分布
最后,计算一个对象占用多大内存 , 需要提前了解java对象的布局 。
点击下方,第一时间了解华为云新鲜技术~
华为云博客_大数据博客_AI博客_云计算博客_开发者中心-华为云
- 牡丹吊兰有毒吗,心叶日中花有毒吗
- 冰块怎么做不容易化,怎样让冰块保持不融化
- 抖音怎么制作手动翻照片,抖音图集怎么搞成自己翻?
- 中筋粉和高筋粉的区别有哪些,高筋面粉和中筋面粉的区别
- 锂保存在哪里,锂单质存放在哪?
- 老公生日送什么礼物,送老公生日礼物送什么比较有意义
- 炒蚬子用不用焯水,辣炒蚬子 是先煮一下呢 还是直接炒
- 雅泰角鲨烯胶囊的功效,角鲨烯软胶囊的功效与作用
- 海上交通与陆上交通相比,明显的优势有,陆上运输与海上运输的优势各是什么
- 中国五大名酒,中国五大名酒是什么?
