Java代码如何查看对象头和锁状态呢?

戚薇 Java教程 发布时间:2023-05-04 21:31:29 阅读数:18318 1
下文笔者讲述使用java代码查看对象头和锁状态的方法及示例分享,如下所示

Java查看对象头和锁状态的实现思路

借助jol-core这个包
    即可查看对象头和锁状态
例:java代码查看对象头和锁状态的示例
<dependency>
	<groupId>org.openjdk.jol</groupId>
	<artifactId>jol-core</artifactId>
	<version>0.9</version>
</dependency>


import org.openjdk.jol.info.ClassLayout;

public class ObjectHeader {
    private static myobject myobject = new myobject();

    public static void main(String[] args) {

        System.out.println("当前MAIN线程开始:
		  " + Thread.currentThread().getName() + "
		  --" + ClassLayout.parseInstance(myobject).toPrintable());

        new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized (myobject) {
                    System.out.println("当前线程:" + Thread.currentThread().getName() + 
					  "--" + ClassLayout.parseInstance(myobject).toPrintable());
                }
            }
        }, "线程1号").start();

        new Thread(new Runnable() {
            @Override
            public void run() {

                synchronized (myobject) {
                    System.out.println("当前线程:
					" + Thread.currentThread().getName() + "--
					" + ClassLayout.parseInstance(myobject).toPrintable());
                }

            }
        }, "线程2号").start();


        System.out.println("当前MAIN线程结束:
		" + Thread.currentThread().getName() + 
		"--" + ClassLayout.parseInstance(myobject).toPrintable());

    }

    static class myobject {
        public myobject() {
        }
    }
}
查看锁状态及对象头
锁状态 代码 备注
无锁状态 01 对象的hashcode,对象分代年龄,是否是偏向锁(0)
偏向锁 01 偏向锁线程ID,偏向时间戳,对象分代年龄,是否是偏向锁(1)
轻量级锁 00 指向栈中锁记录的指针
重量级锁 10 指向互斥量(重量级锁)指针
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaCourse/202305/6345.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者