Thread in java-interpreter是指什么?
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的表的一个切换来做的,正常运行的话,其实并没有做检查,所以它的性能并不会受影响。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。