在哪里可以找到有关Sun JVM内部工作原理的信息?

时间:2011-08-14 03:05:49

标签: java performance jvm jvm-hotspot

作为开发人员,我想知道调用虚方法与接口方法的成本是多少。现在,我知道为什么invokeinterface可能比invokevirtual慢,但我想知道Sun是否在他们发布的JVM的最新版本中采用了新的机制来改进invokeinterface。我怎样才能找到这样的信息?

1 个答案:

答案 0 :(得分:0)

收购Sun的甲骨文在其网站上提供了有关HotSpot JVM的旧Sun白皮书:

http://java.sun.com/products/hotspot/docs/whitepaper/Java_HotSpot_WP_Final_4_30_01.html

至于您关于invokevirtualinvokeinterface的初步问题,Sun已经做了很多非常积极的性能优化,试图改进这一点。他们使用的众多技术之一称为polymorphic inline caching,可以极大地简化接口调度的运行时开销,降低到常规invokevirtual调度的水平或更好。我们的想法是跟踪每个调用站点附近的一个小表,跟踪呼叫站点经常使用的类型。每当调用接口方法时,调用该方法的对象就可以将其类型与已知类型进行比较,如果匹配,则可以通过查找应该调用哪个方法的小缓存来快速进行调用。

此外,我认为HotSpot使用动态分析来试图证明在某些程序点,接口指针引用的对象类型完全是某种特定类型。如果是这样,则可以完全内联调用或者可以在不需要任何进一步动态查找的情况下解析调用。

希望这有帮助!