第146页 Threads and Synchronization - The Java bytecode implementation
RednaxelaFX (Script Ahead, Code Behind)
- 章节名:Threads and Synchronization - The Java bytecode implementation
- 页码:第146页
这小节提到Java字节码指令集里有monitorenter与monitorexit两条指令用于实现同步的功能。但这俩字节码主要用来实现synchronized块;synchronized方法却并没直接用这两条指令,而是在方法的元数据上记录它有ACC_SYNCHRONIZED属性。
也就是说JRockit会在类加载的时候把synchronized方法改写为synchronized块的那种形式,使用monitorenter与monitorexit来显式标记出synchronized块的monitor对象和范围。这样,它的JIT编译器就不需要对带有ACC_SYNCHRONIZED属性的方法做特殊处理,因为都变成统一的字节码形式。 顺带一提,HotSpot VM并没有做这种字节码改写,在解释器和JIT编译器里都会检查方法是否带有ACC_SYNCHRONIZED属性并做相应的特殊处理。
108人阅读
RednaxelaFX对本书的所有笔记 · · · · · ·
-
第146页 Threads and Synchronization - The Java bytecode implementation
-
第124页 Chapter 4 Threads and Synchronization, Fundamental Concepts
介绍了JRockit的对象布局。这里的介绍略为抽象,不过概念说得挺好。回头再补充细节
-
第112页 Finalizers
David Buck写了篇博文描述JRockit R28里一个关于finalizer的bug,配合书里的Finalizers这段来...
> 查看全部3篇
说明 · · · · · ·
表示其中内容是对原文的摘抄