【问题标题】:Java VM tuning - Xbatch and -XcompJava VM 调优 - Xbatch 和 -Xcomp
【发布时间】:2010-07-30 08:27:13
【问题描述】:

我正在查看运行 Alfresco 的 JVM 配置选项,主要是 Alfresco Wiki 上的 this 文档。其中一项建议是使用 JVM 标志 -Xcomp-Xbatch。这样做的理由是:

如果您希望 Hotspot 预编译类,您可以添加 [-Xcomp 和 -Xbatch]。但是,这将显着增加服务器启动时间,但会突出显示稍后可能会遇到的缺失依赖项。

根据我对-Xcomp-Xbatch 标志的read elsewhere,我想知道它们是否真的提供了任何好处。

  • -Xcomp 让 HotSpot 以最大程度的优化预先编译所有代码,从而避免 VM 将通过系统标准运行进行的任何分析。
  • -Xbatch 停止后台编译,这意味着导致代码被编译的线程阻塞,直到编译完成。但是,编译完成后,之前阻塞的线程不会运行编译后的代码it will still run the interpreted code。这是 Java 6 (Mustang) 中的一个变化——在 Mustang 之前,由于存在 -Xbatch 标志而阻塞编译的线程保证在编译完成后立即在编译代码中运行。因此,我猜测-Xbatch 标志的推荐是在旧 VM 上运行 Alfresco 的遗留物。

有人有什么想法吗?我倾向于摆脱这两个标志并依靠虚拟机来解决问题。

我想补充两件事,首先我还没有访问 Alfresco 实例的权限来测试它,其次我真的不知道托管 Alfresco 的机器是什么规格在其他配置选项中,它必须是 64 位 VM。尽管如此,我希望社区能提供一些有用的意见,也许是从一般的 HotSpot 调整的角度来看。

【问题讨论】:

  • Alfresco 页面上的真实示例部分是 2009 年 8 月,它似乎是 JDK 1.6 ?
  • @ktaylorjohn 是的,这是正确的,但我只是想知道 -Xbatch 和 -Xcomp 标志是否有任何区别。 Alfresco 似乎是唯一在 JVM 测试和类似领域之外提及这些标志的项目。

标签: java jvm jvm-hotspot jvm-arguments


【解决方案1】:

一般来说,最好让 HotSpot 编译器自行调整。即使使用服务器 VM (-server) 也是 64 位和一些“服务器级”机器的默认设置。

-Xbatch 主要用于调试,如您指出的Steve Goldman's blog 所述:

因此,即使在野马出现之前,-Xbatch 开关也不是特别有用的开关。它对 jvm 开发人员有点用处,因为它倾向于使运行更具可预测性和可重现性。

-Xcomp 删除了收集信息以进行高效编译的能力。来自Alex Turner's post

从性能的角度来看,有人可能会认为 -Xcomp 是一个好主意。然而,事实并非如此! JIT 编译器在编译之前使用这 1000 次迭代来收集有关如何编译该方法以获得最佳效率的信息。 -Xcomp 取消了这样做的能力,因此我们实际上可以看到性能下滑。

如果不考虑性能,我从未见过使用这些标志来检测缺失的依赖项 (and it may not work if some code is still interpreted),所以恕我直言,我会摆脱这两个。

【讨论】:

  • 链接已失效
【解决方案2】:

Alfresco 是一种企业内容管理。我不确定标志如何影响其性能。然后在同一页面上的注释说..

-- 但是,这将显着增加服务器启动时间,但会突出显示稍后可能会遇到的缺失依赖项。 ...

恕我直言,作者并不是真的意味着性能提升。他/她写它是为了检查所有依赖关系是否到位。

【讨论】:

    猜你喜欢
    • 2013-02-17
    • 2015-12-29
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多