开发者社区> 问答> 正文

Thread in java-interpreter是指什么?

Thread in java-interpreter是指什么?

展开
收起
1358896759097293 2021-05-04 15:21:47 772 0
1 条回答
写回答
取消 提交回答
  • 45271990@qq.com

    Thread in Java的解释器模式,hotstpot中解释器其实是通过一个叫dispatch table的一个数据结构来实现的,Dispatch table就是一个很大的 table,对于每个bite code,它对应的就是一小段的执行代码,所以它执行的时候,是哪个bite code就执行 dispatch table中的哪一段代码,然后在不停的跳转。 在解释器里面,在hotstpot中,其实是维护了两套dispatch table,一个就是normal table,这就是刚刚说对每个 bite code做解释执行的代码,另一个safept table,除了做正常的解释执行之外,对每个bite code执行之前会加入一小段代码来检测,Jvm是不是发起了 safepoint的请求,如果发起safepoint的请求,就可以把自己给停下来。 通过这样一个方式来safepoint的check的,正常的话, Java执行的都是normal table里的bite code,如果 vm Thread决定发起一次safepoint的请求的时候,hotstpot内部有个active table的指针,它会做一次切换,从normal table中切换到了safept table。 一个bite code执行完,会去取下一次bite code的执行代码,因为这时候已经被切换到了safept table,会执行ssafept table中对应的代码,然后就会检查safepoint,然后再暂停。 所以基本上可以理解在解释器模式中,在每一次的bite code的最后都会做一次检查,但实际上它是通过一个 table的表的一个切换来做的,正常运行的话,其实并没有做检查,所以它的性能并不会受影响。

    2021-05-05 22:51:26
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载