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信


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部