首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法未在Hotspot JVM中编译的原因

方法未在Hotspot JVM中编译的原因
EN

Stack Overflow用户
提问于 2010-06-28 22:04:59
回答 2查看 247关注 0票数 4

可以使用一些标志来提供有关已编译方法的日志信息。关于没有编译的方法以及为什么没有编译的信息在哪里?能够看到hotspot编译器是如何做出决定的,以及它不编译某些方法的原因,这将使我更好地理解JVM,并允许我编写更好的代码,并可能优化我的一些方法。有人对这个话题有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2010-06-29 10:05:45

根据:http://blog.headius.com/2009/01/my-favorite-hotspot-jvm-flags.html

Hotspot打印出-XX:+PrintCompilation决定进行即时编译的每个

方法的名称。该列表最初通常会显示一组核心Java类方法,然后转向应用程序中的方法。

我个人认为这会占用你很多时间。如果您使用最佳实践和一些常识编写代码,然后如果性能有问题,请进行配置文件。你应该做得很好。

票数 3
EN

Stack Overflow用户

发布于 2016-04-13 20:16:13

答案是,如果方法没有被执行足够多的次数,它们可能不会被编译。本机代码缓存是有限的,因此编译每个方法都是适得其反的;您最终可能会得到许多已编译的方法,但随后重要的方法不再适合缓存大小。

确切的数字因版本而异,但是如果使用-XX:+PrintFlagsFinal运行Java,那么您将看到所有可以调整的设置,包括Tier3CompileThreshold (值为2000)和Tier4CompileThreshold (值为15000)。因此,如果您不调用您的方法超过2000次,它将使用解释器来遍历它。

如果您想要在JIT条件下执行性能分析,那么您需要执行大量调用方法的循环才能看到好处,或者使用诸如JMH之类的性能分析工具来正确地执行性能分析。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3133037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档