JVM选项XX:UseFastEmptyMethods/XX:UseFastAccessorMethods

gui*_*ido 8 java optimization jvm-arguments

在查看可能的JVM标志以优化我的RCP产品的启动启动时间的同时,我发现了这些具有吸引力的命名-XX:UseFastEmptyMethods-XX:UseFastAccessorMethods.

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

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

Aja*_*rge 7

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

这里开始讨论

如果您使用的是JDK6,则可能需要在目标Java应用程序中包含这两个VM标志:
-XX:-UseFastEmptyMethods -XX:-UseFastAccessorMethods

否则,方法和访问器方法将不会显示在列表中,因为"快速"版本不会增加这些方法的调用计数器.在JDK7中,这两个标志默认为false,因此您无需明确将它们设置为false.


也可以看看 :

UseFastEmptyMethods/UseFastAccessorMethods被认为是有害的