Java Object Layout(jol)
2016-03-11 18:13
381 查看
摘要: Java Object Layout(jol)
下载源代码:
pom.xml添加依赖
代码
输出
下载源代码:
hg clone http://hg.openjdk.java.net/code-tools/jol/ jol cd jol mvn clean install
pom.xml添加依赖
<dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
代码
public static void main(String[] args) { int size = 10; List<Integer> list = new ArrayList<Integer>(size); for (int i = 0; i < size; i++) { list.add(i); } //虚拟机信息 out.println(VMSupport.vmDetails()); //打印类内部的占用 out.println(ClassLayout.parseClass(ArrayList.class).toPrintable()); //打印实例内部的占用 out.println(ClassLayout.parseClass(ArrayList.class).toPrintable(list)); //打印实例外部的占用 out.println(GraphLayout.parseInstance(list).toPrintable()); //打印实例各个依赖的占用,并汇总 out.println(GraphLayout.parseInstance(list).toFootprint()); }
输出
Running 64-bit HotSpot VM. Using compressed references with 3-bit shift. Objects are 8 bytes aligned. Field sizes by type: 4, 1, 1, 2, 2, 4, 4, 8, 8 [bytes] Array element sizes: 4, 1, 1, 2, 2, 4, 4, 8, 8 [bytes] java.util.ArrayList object internals: OFFSET SIZE TYPE DESCRIPTION VALUE 0 12 (object header) N/A 12 4 int AbstractList.modCount N/A 16 4 int ArrayList.size N/A 20 4 Object[] ArrayList.elementData N/A Instance size: 24 bytes (estimated, the sample instance is not available) Space losses: 0 bytes internal + 0 bytes external = 0 bytes total java.util.ArrayList object internals: OFFSET SIZE TYPE DESCRIPTION VALUE 0 4 (object header) 19 00 00 00 (0001 1001 0000 0000 0000 0000 0000 0000) 4 4 (object header) 00 00 00 00 (0000 0000 0000 0000 0000 0000 0000 0000) 8 4 (object header) 31 32 00 f8 (0011 0001 0011 0010 0000 0000 1111 1000) 12 4 int AbstractList.modCount 10 16 4 int ArrayList.size 10 20 4 Object[] ArrayList.elementData [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Instance size: 24 bytes (estimated, add this JAR via -javaagent: to get accurate result) Space losses: 0 bytes internal + 0 bytes external = 0 bytes total java.util.ArrayList object externals: ADDRESS SIZE TYPE PATH VALUE 74002ca98 16 java.lang.Integer .elementData[9] 9 74002caa8 16 java.lang.Integer .elementData[8] 8 74002cab8 16 java.lang.Integer .elementData[7] 7 74002cac8 16 java.lang.Integer .elementData[6] 6 74002cad8 16 java.lang.Integer .elementData[5] 5 74002cae8 16 java.lang.Integer .elementData[4] 4 74002caf8 16 java.lang.Integer .elementData[3] 3 74002cb08 16 java.lang.Integer .elementData[2] 2 74002cb18 16 java.lang.Integer .elementData[1] 1 74002cb28 16 java.lang.Integer .elementData[0] 0 74002cb38 491560 (something else) (somewhere else) (something else) 7400a4b60 56 [Ljava.lang.Object; .elementData [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 7400a4b98 1432458504 (something else) (somewhere else) (something else) 7956be0a0 24 java.util.ArrayList (object) java.util.ArrayList instance footprint: COUNT AVG SUM DESCRIPTION 1 56 56 [Ljava.lang.Object; 10 16 160 java.lang.Integer 1 24 24 java.util.ArrayList 12 240 (total) http://bboniao.com/openjdk/2014-06/java-object-layoutjol.html[/code]
相关文章推荐
- Java 6 JVM参数选项大全(中文版)
- 深入解析JVM对dll文件和对类的装载过程
- Java虚拟机JVM性能优化(二):编译器
- Java程序员必须知道的5个JVM命令行标志
- Java虚拟机JVM性能优化(三):垃圾收集详解
- 解析Java虚拟机中类的初始化及加载器的父委托机制
- JAVA中JVM的重排序详细介绍
- 浅谈Java的虚拟机结构以及虚拟机内存的优化
- Java虚拟机JVM性能优化(一):JVM知识总结
- Android Studio 报错failed to create jvm error code -4的解决方法
- 解析Linux系统中JVM内存2GB上限的详解
- 了解Java虚拟机JVM的基本结构及JVM的内存溢出方式
- Java堆空间占满的gc日志实例
- java动态代理模式
- Groovy Meta Object Protocol
- xms/xmx/xss在kette中的调优设置
- JVM工作原理和特点
- JVM性能调优监控工具jps、jstack、jstat、jmap、jinfo使用详解
- jmap详解
- 深入Java虚拟机