使用jol查看对象内部布局
JOL介绍
JOL可以查看java对象的内部布局,也可以查看对象占用的空间。
如何使用
Maven引入JOL依赖
<dependencies><!-- https://mvnrepository.com/artifact/org.openjdk.jol/jol-core --><dependency><groupId>org.openjdk.jol</groupId><artifactId>jol-core</artifactId><version>0.16</version></dependency>
</dependencies>
编写代码查看对象结构
public static void main(String[] args) {Object obj = new Object();System.out.println(ClassLayout.parseInstance(obj).toPrintable());byte[] objArr = new byte[100];System.out.println(ClassLayout.parseInstance(objArr).toPrintable());
}
输出结果:
java.lang.Object object internals:
OFF SZ TYPE DESCRIPTION VALUE0 8 (object header: mark) 0x0000000000000001 (non-biasable; age: 0)8 4 (object header: class) 0xf80001e512 4 (object alignment gap)
Instance size: 16 bytes
Space losses: 0 bytes internal + 4 bytes external = 4 bytes total[B object internals:
OFF SZ TYPE DESCRIPTION VALUE0 8 (object header: mark) 0x0000000000000001 (non-biasable; age: 0)8 4 (object header: class) 0xf80000f512 4 (array length) 10012 4 (alignment/padding gap) 16 100 byte [B.<elements> N/A
116 4 (object alignment gap)
Instance size: 120 bytes
Space losses: 4 bytes internal + 4 bytes external = 8 bytes total
结果说明:
(object header: mark)
就是Java对象头中的Mark Word部分,因为是在64位机器上执行的,所以占用8字节。64位机器上1个字宽等于64bit,也就是4个字节,Java对象头占用2个字宽。(object header: class)
存储到对象类型数据的指针。(array length)
存储数组的长度。如果对象是数组,对象头会占用3个字宽。(普通对象的对象头占用2个字宽。)
使用jol查看对象内部布局相关推荐
- python魔法属性_查看对象内部属性的名称和值,Python“魔法”属性__dict__的使用...
我们知道,Python中"一切皆对象",Python是一门真正意义上面向对象的编程语言.因此,如果对对象内部存储结构了解不深入,在学习Python的道路上是没有办法进阶的.今天,我 ...
- 【Java】MacOS Eclipse使用JOL观察对象布局(详解)
目录 安装Homebrew 下载JOL源码 安装Maven Eclipse中配置maven Eclipse中创建maven项目 最近想利用Eclipse查看Java对象的布局情况,于是在MAC上下载了 ...
- JOL(java object layout): java 对象内存布局
我们天天都在使用java来new对象,但估计很少有人知道new出来的对象到底长的什么样子?对于普通的java程序员来说,可能从来没有考虑过java中对象的问题,不懂这些也可以写好代码.今天,给大家介绍 ...
- easyui form提交和formdata提交记录,查看FormData对象内部的值
1 easyui form提交 $('form').form('submit',{url:'';onSubmit:'';success:function(data){//这种方法获取到的data是字 ...
- JOL(java object layout --java 对象内存布局)
JOL(java object layout --java 对象内存布局) ⚠⚠⚠本文以java普通对象为切入点,分析java的对象内存布局,数组见文末 maven地址
- Java对象内存布局(JOL)
前言 Java对象的内存布局主要由对象头(Object Header).实例数据(instance data).对齐填充(padding)三部分组成. 对象头:存储对象的基础信息(如锁状态.GC状态. ...
- openjdk jol 工具打印 Java 对象内存布局
1.maven 依赖 <dependency><groupId>org.openjdk.jol</groupId><artifactId>jol-cor ...
- JVM成神路对象内存布局、分配过程、从生至死历程、强弱软件引用
引言 对象实例的角度,阐述一个Java对象从生到死的历程.Java对象在内存中的布局以及对象引用类型. 一.Java对象在内存中的布局 Java源代码中,使用new关键字创建出的对象实例,我们都知道在 ...
- (五)JVM成神路之对象内存布局、分配过程、从生至死历程、强弱软虚引用全面剖析
引言 在上篇文章中曾详细谈到了JVM的内存区域,其中也曾提及了:Java程序运行过程中,绝大部分创建的对象都会被分配在堆空间内.而本篇文章则会站在对象实例的角度,阐述一个Java对象从生到死的历程.J ...
最新文章
- 到2020年,智能手机将拥有十项AI功能,有些可能会出乎你意料
- 海思全力部署智能城市NB-IoT应用
- 时代天使点燃口腔赛道,瑞尔集团离下一只“牙茅”还有多远?
- [css] 说说浏览器解析CSS选择器的过程?
- Java爬取网页源代码解析
- [INet] WebSocket 数据收发的详细过程
- 走进WPF之开发类似Visio软件
- java英语单词查询,输入一个单词根据字典查询单词意思
- c语言是非结构化程序语言_C语言是一种非结构化程序设计语言。
- hutool SpringUtil.getBean() NullPointerException
- intel服务器cpu芯片线路图,Intel CPU路线图:14nm一直用到2021年
- 如何控制工业设计公司的设计效果?
- 学mtml还是html5,图解核苷酸替代模型的选择 – MrMTgui 篇
- RuntimeError: Expected 4-dimensional input for 4-dimensional weight, but got 3-dimensional input
- 解决** WARNING ** : Your ApplicationContext is unlikely to start due to a @ComponentScan of the defau
- 使用idm的一些注意事项
- android 5.0 按钮颜色,Android 5.0系统默认颜色
- 【数据结构】3.十进制转十六进制
- 中小学人工智能教育阶段教学模式研究
- python破解手机锁屏密码_手机屏幕解锁模式