Java中如何查看java对象所占内存大小呢?
下文笔者讲述java中查看对象占用内存大小的方法及示例分享,如下所示
对象占用内存大小的实现思路
方式1 使用jdk自带的方法 ObjectSizeCalculator.getObjectSize查看 方式2 使用org.apache.lucene工具类 方式3 使用jol工具类例:查看java对象的示例
1.使用jdk8自带API 使用这种jdk8方式时 Open JDK需要set一下环境变量 System.setProperty("java.vm.name","Java HotSpot(TM) "); System.out.println(ObjectSizeCalculator.getObjectSize(123L)); 2.借助org.apache.lucene工具类 当一个对象有多个属性 需要计算整个对象的大小时 可使用org.apache.lucene工具类 2.1 引入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> 2.2 编写业务代码 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对象所占内存的大小 3.1 导入maven坐标 <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.9</version> </dependency> 3.2 编写测试代码 System.out.println(ClassLayout.parseInstance(89L).toPrintable());
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。