栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【并发编程】Java利用ClassLayout查看对象头

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【并发编程】Java利用ClassLayout查看对象头

Java利用ClassLayout查看对象头 1.添加依赖

不同的版本,打印信息不同

  
  
    org.openjdk.jol  
    jol-core  
    0.9 


  
    org.openjdk.jol  
    jol-core
  0.16 

2.mark word说明

Mark Word 64 位, 格式如下:

3.查看对象头(0.9版本)
public class Juc_book_fang_04_JolTest_02 {

    public static void main(String[] args) {
        Object dog = new Object();
        System.out.println("初始信息:"+ClassLayout.parseInstance(dog).toPrintable());
        System.out.println(dog.hashCode());
        System.out.println("hashcode信息:"+ClassLayout.parseInstance(dog).toPrintable());
        synchronized (dog) {
            System.out.println("加锁后信息:"+ClassLayout.parseInstance(dog).toPrintable());
        }
        System.out.println("释放锁后信息:"+ClassLayout.parseInstance(dog).toPrintable());
    }
}

对比生成 hashcode 前后 发现, 只有第二段到第五段有变化 第六到八段依旧为 0,那么第六到八段应该就是 25 位的 unused , 第二到五段应该就是 31 位的 hashcode. 但是根据 64 位的 mark word 格式来看, 应该是 25 位的 unused 排在 hashcode 前面并且结尾应该为 01, 所以这段是倒叙排列的.

jol 获取的对象头是前八段倒叙排列,倒序的有点可以参考redis的二进制处理,也是使用的倒序.原理都是相通的.

4.查看对象头(0.16版本)
public class Juc_book_fang_04_JolTest_02 {
    public static void main(String[] args) {
        final Object obj = new Object();
        System.out.println("启动后对象布局:n" + ClassLayout.parseInstance(obj).toPrintable());
        //JKD8延迟4S开启偏向锁
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        //可偏向 101
        final Object monitor = new Object();
        System.out.println("延迟5秒后对象布局:n" + ClassLayout.parseInstance(monitor).toPrintable());
        //偏向锁
        synchronized (monitor) {
            System.out.println("对象加锁后的布局:n" + ClassLayout.parseInstance(monitor).toPrintable());
        }
        System.out.println("对象释放锁后的布局:n" + ClassLayout.parseInstance(monitor).toPrintable());
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/956391.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号