随着时间的推移,Sun 的 JVM 和 JIT 已经变得相当智能。过去作为必要的微优化而成为常识的事情不再需要,因为它会为您处理好。
例如,过去的情况是,您应该将所有可能的类标记为 Final,以便 JVM 内联尽可能多的代码。然而现在,JIT 根据运行时加载的类来知道您的类是否是最终的,如果您加载一个类以使原始类成为非最终类,它会取消内联方法并将其标记为最终的。
JVM 或 JIT 还可以为您执行哪些其他智能微优化?
EDIT:我将其设为社区维基;我想随着时间的推移收集这些。
这令人印象深刻。所有这些都是你的事情can't
在 C++ 中可以做到(当然与 Java 的程度相同)。请记住,Java 的早期版本因为没有这些东西而开始了“缓慢”的声誉,我们不断改进显著地随着时间的推移。这仍然是一个很大的研究领域。
- 高效的接口调度。 http://www.springerlink.com/content/9lvkunnh80fapue7/
- 虚拟方法调用的内联和直接调度。 https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.34.3108
- 非常快速的对象分配凹凸指针 https://www.oracle.com/java/technologies/javase/javase-core-technologies-apis.html(幻灯片 19 左右)和逃逸分析 https://web.archive.org/web/20150527090724/http://java.dzone.com/articles/escape-analysis-java-6-update.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)