对象锁的锁标识在对象头的 markword 中,那么类锁标识存放在哪里?这两者是怎样保证实例方法和静态方法互不干扰的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Sunhcer
V2EX    Java

对象锁的锁标识在对象头的 markword 中,那么类锁标识存放在哪里?这两者是怎样保证实例方法和静态方法互不干扰的?

  •  
  •   Sunhcer Apr 20, 2022 1946 views
    This topic created in 1467 days ago, the information mentioned may be changed or developed.
    8 replies    2022-04-23 14:20:10 +08:00
    heiher
        1
    heiher  
       Apr 20, 2022 via Android
    一切皆是对象~
    zmal
        2
    zmal  
       Apr 21, 2022   1
    class 也是对象,放在 metaspace 。
    huang119412
        3
    huang119412  
       Apr 21, 2022   2
    对象锁的锁标识在对象头的 markword 中?这是错误的。Java 标准、Java 虚拟机规范中,都没有具体的对象模型。所以你说的 markword 这是 HotSpot 实现的方式。HotSpot 的对象模型是 kclass-oop ,kclass 本身也有 markword 。对象模型的实现在\openjdk\hotspot\src\share\vm\oops\目录下。kclass-oop 的 markword 在 oop.hpp#oopDesc#__mark 和 kclass.hpp#Klass#_prototype_header
    Sunhcer
        4
    Sunhcer  
    OP
       Apr 21, 2022
    @heiher 谢谢提醒,确实有意识到他是对象,但就是好奇类锁明确的运行机制
    @zmal 提问时才发现,我的理解是建立在 1.7 版本,感谢提醒,get 了元空间
    @huang119412 谢谢你的详细讲解 ,对象锁的锁标识在对象头的 markword 这确实是 hotspot 的实现方式,是我描述不当; 我按照你的提示,在源码中确实找到这两处;哈哈,但是不懂 c ,如果我还是想验证类锁的运行机制的话,你能否推荐一下相关书籍,我去研究一下
    Sunhcer
        5
    Sunhcer  
    OP
       Apr 21, 2022
    oracle 官网有点问题,暂时下载不了源码压缩包时,如果有感兴趣的,可以从下面拿到源码压缩包
    链接: https://pan.baidu.com/s/1eL8kcRV2NgmskcBtw-ccXA 密码: ol83
    Sunhcer
        6
    Sunhcer  
    OP
       Apr 21, 2022
    @huang119412 两者都是对象,都由 markOopDesc 类来实现锁机制?所以类锁和实例对象锁的实现,其实是一样的吗?
    Sunhcer
        7
    Sunhcer  
    OP
       Apr 23, 2022
    研究了一波 class ,就整个 class 体系而言,(对普通类型而言) IntanceKlass 持有元信息和 class 对象,而真正的类对象 =java 代码中获取到类对象 InstanceMirrorKlass ,是存放在堆区的, 然后实例对象 oop 也是存放在堆区,这样说才准确吧?
    @zmal
    Sunhcer
        8
    Sunhcer  
    OP
       Apr 23, 2022
    6 楼猜想错了,参考《深入剖析 Java 虚拟机:源码剖析与实例详解(基础卷)》初步验证了 3 楼大佬的说法
    About     Help     Advertise     Blog     API     FAQ     Solana     1069 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 23:27 PVG 07:27 LAX 16:27 JFK 19:27
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86