java jol原理_终于我用JOL打破了你对java对象的所有想象
简介
使用面向对象的编程语言的好处就是,虽然没有女朋友,但是仍然可以new对象出来。Java是面向对象的编程语言,我们天天都在使用java来new对象,但估计很少有人知道new出来的对象到底长的什么样子,是美是丑到底符不符合我们的要去?
对于普通的java程序员来说,可能从来没有考虑过java中对象的问题,不懂这些也可以写好代码。
但是对于一个有钻研精神的极客来说,肯定会想多一些,再多一些,java中的对象到底是什么样的。
今天,小F给大家介绍一款工具JOL,可以满足大家对java对象的所有想象。
更多精彩内容且看:
JOL简介
JOL的全称是Java Object Layout。是一个用来分析JVM中Object布局的小工具。包括Object在内存中的占用情况,实例对象的引用情况等等。
JOL可以在代码中使用,也可以独立的以命令行中运行。命令行的我这里就不具体介绍了,今天主要讲解怎么在代码中使用JOL。
使用JOL需要添加maven依赖:
org.openjdk.jol
jol-core
0.10
添加完依赖,我们就可以使用了。
使用JOL分析VM信息
首先我们看下怎么使用JOL来分析JVM的信息,代码非常非常简单:
log.info("{}", VM.current().details());
输出结果:
# Running 64-bit HotSpot VM.
# Using compressed oop with 3-bit shift.
# Using compressed klass with 3-bit shift.
# WARNING | Compressed references base/shifts are guessed by the experiment!
# WARNING | Therefore, computed addresses are just guesses, and ARE NOT RELIABLE.
# WARNING | Make sure to attach Serviceability Agent to get the reliable addresses.
# 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]
上面的输出中,我们可以看到:Objects are 8 bytes aligned,这意味着所有的对象分配的字节都是8的整数倍。
使用JOL分析String
上面的都不是重点,重点是怎么使用JOL来分成class和Instance信
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
