深入探索JVM垃圾回收:ARM服务器垃圾回收的挑战和优化
上QQ阅读APP看书,第一时间看更新

2.5.1 解释线程进入安全点

对于Mutator线程来说,如果它正处于解释执行状态,即通过解释器对每一条字节码执行,那么此时该如何主动放弃CPU?基本思路是当虚拟机要求解释线程暂停时,解释器会执行完当前的字节码,然后暂停。参考1.4.3节JVM对解释器的实现,虚拟机提供一个正常指令派发表,还提供一个异常指令派发表,需要进入安全点的时候,JVM会用异常指令派发表替换这个正常指令派发表,那么当前字节码指令执行完毕之后再执行下一条字节码指令,就会进入异常指令派发表。

解释线程进入安全点的时间通常是可控的,进入暂停的最大等待时间是一条字节码的执行时间。