网站首页 > 精选教程 正文
计算java对象所占内存大小
1.使用jdk8自带API
使用这种jdk8方式时,Open JDK 不是天然支持的,需要set一下环境变量
System.setProperty("java.vm.name","Java HotSpot(TM) ");
System.out.println(ObjectSizeCalculator.getObjectSize(3L));
结果如下:
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));
结果如下:
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对象的布局。
原文链接:https://www.cnblogs.com/huaweiyun/p/16416147.html
- 上一篇: 经典笔试题:求两个字符串中交集字串的最大长度
- 下一篇: 多语言的字符串处理记录
猜你喜欢
- 2024-12-31 Java String 类用法详解
- 2024-12-31 删除字符串的指定字符
- 2024-12-31 Java Lambda表达式详解(非常全面)
- 2024-12-31 Java分割字符串(spilt())
- 2024-12-31 C#知识|语法拾遗:字符串相关的几种方法
- 2024-12-31 Java KMP算法:让字符串匹配不再烦恼
- 2024-12-31 GitHub标星3.9K的文本识别系统,优雅,实在是太优雅了
- 2024-12-31 Java常用类String实战
- 2024-12-31 Java中字符串StringBuffer和StringBuilder的使用
- 2024-12-31 Python字符串总结
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)