【问题标题】:JVM option XX:UseFastEmptyMethods/XX:UseFastAccessorMethodsJVM 选项 XX:UseFastEmptyMethods/XX:UseFastAccessorMethods
【发布时间】:2013-03-14 13:09:07
【问题描述】:

在查看我的 RCP 产品的 possible JVM flags for optimizing launching startup time 时,我发现这些名称很吸引人的 -XX:UseFastEmptyMethods-XX:UseFastAccessorMethods

似乎这些标志在 JDK-6 上可用(默认情况下是打开的),而在 JDK-7 上它们默认为关闭。另外,我读到这种优化的权衡是它们不会增加方法调用计数器。

不使用调用计数器有什么影响?这会影响垃圾回收吗?

【问题讨论】:

  • 我猜它不会影响 GC,但可能会影响 JIT,因为这些计数器用于确定“热”代码路径以进行优化

标签: java optimization jvm-arguments


【解决方案1】:

用于正确获取方法的调用次数,以便 VM 更好地识别代码中的热点。

关注here的讨论

如果您使用的是 JDK6,您可能需要在您的 目标 Java 应用程序:
-XX:-UseFastEmptyMethods -XX:-UseFastAccessorMethods

否则 empty 方法和访问器方法将不会显示在列表中,因为 “快速”版本不会增加这些的调用计数器 方法。在 JDK7 这两个标志默认为 false,所以你没有 费心将它们显式设置为 false。


另见:

UseFastEmptyMethods/UseFastAccessorMethods considered harmful

【讨论】:

  • +1 谢谢。虽然答案的第一部分有点无关紧要(我在问打开标志的原因和后果),但第二个链接很有用。我仍然会知道在什么情况下打开这些标志被认为是安全的。
猜你喜欢
  • 2014-07-17
  • 2019-02-22
  • 1970-01-01
  • 2011-04-15
  • 2014-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
相关资源
最近更新 更多