lucene-core 为我们提供了简单的API,直接调用就能够简单的计算出一个Java对象占用内存的大小
使用方式:
<dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>4.6.0</version> </dependency>
Java 简单示例
public void test1(){ // (8 + 4 + 4 + 8 + 4 +4 + 8 ) + 4*2 + 4 String s = new String("11111"); HashMap<String, String> map = new HashMap<>(); map.put("1","2"); map.put("2","2"); map.put("3","2"); System.out.println(RamUsageEstimator.shallowSizeOf(s)); System.out.println(RamUsageEstimator.humanSizeOf(s)); Address address = new Address(); address.setAreaId(1); address.setName("A"); System.out.println(RamUsageEstimator.shallowSizeOf(address)); System.out.println(RamUsageEstimator.humanSizeOf(address)); }
计算Java对象的内存布局
<dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.16</version> </dependency>
System.out.println(ClassLayout.parseInstance(s).toPrintable());
参考:Java 对象(数组)占多大空间(几个字节) 手把手做实验_wanjinyu的技术空间的博客-CSDN博客_java数组占多少字节