gpt4 book ai didi

jvm - 为什么偏向锁使用与轻量级锁不同的标记词

转载 作者:行者123 更新时间:2023-12-04 17:44:01 26 4
gpt4 key购买 nike

当一个线程持有 bassed-locking 时。标记词是thread id。但是对于轻量级锁,标记字是指向线程的堆栈指针,为什么不仍然存储线程ID呢?

最佳答案

精简锁架构假定锁定对象的标记字指向锁定该对象的帧的栈槽。此堆栈槽存储原始对象 header (也称为置换 header )。

    Unlocked:
[ orig_header | 001 ] | Stack frame |
| |
Locked: | |
[ stack_ptr | 000 ] | |
| |-------------|
--------------------->| orig_header |
|-------------|
| |
| |
-------------

显然栈槽携带的信息比线程 ID 多,因为您可以从栈槽导出线程 ID,但反之则不行。

与解锁操作实际上是空操作的偏向模式不同,当对象解锁时,精简锁需要恢复原始 header 。这变得非常简单,因为标记字已经指向具有原始值的堆栈槽。

关于jvm - 为什么偏向锁使用与轻量级锁不同的标记词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53031691/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com