JVM Synchronized实现的问题

1.monitor record 这个东西是不是只有在重量级锁里面才会涉及,轻量级锁只是涉及mark word中指针指向的改变?
2.我网上看到好几篇文章讲到monitor record,lockword这个东西,但是我看JVM源码的时候也没找到这个类,monitor反而有一个ObjectMonitor的类型,但是文章里将monitor有Owner,entryQ,rcthis,nest等等字段,而ObjectMonitor只有一个owner是相同,另外几个字段都没,所以感觉是不是文章写错了还是我理解错了

有没大神帮忙解答一下这几个问题

jvm

2个回答

mark word在对象头里。首先在oop.hpp中,

class oopDesc {
  friend class VMStructs;
 private:
  volatile markOop  _mark;
  union _metadata {
    wideKlassOop    _klass;
    narrowOop       _compressed_klass;
  } _metadata;
... 

看到_mark了吧,接下来看markOop.hpp,你要的都在里面了。

接下来是monitor record,我没怎么听到这个词组,搜了一下,一下子就找到了你看的文章。。按照我的理解,可能的原因是,作者读的不是Hotspot的源码。。

不要纠结了,殊途同归,可以按照他的思路在Hotspot中作对照,加油

u013160932
六道木_ 非常感谢
大约 2 年之前 回复

monitor等需要操作系统api的支持,它的开销比较大。而mark word则会被jvm翻译成直接的cpu指令。所以前者实际上底层的实现都在操作系统内核里,你看不见。

u013160932
六道木_ 你说的monitor应该是底层那个monitor,我说的是monitor record这个数据结构。还有Mark Word是对象头的结构吧,不是cpu指令吧= =
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐