34

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

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

从我在其他地方读到的关于-Xcompand-Xbatch标志的内容,我想知道它们是否真的提供了任何好处。

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

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

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

4

2 回答 2

28

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

-Xbatch 主要用于调试,如您指出的Steve Goldman 的博客中所述:

所以 -Xbatch 开关即使在野马前的日子里也不是特别有用的开关。它对 jvm 开发人员有些用处,因为它倾向于使运行更加可预测和可重现。

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

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

如果没有考虑到性能,我从来没有见过使用这些标志来检测丢失的依赖项(如果某些代码仍然被解释,它可能无法工作)所以恕我直言,我会摆脱两者。

于 2010-08-09T11:18:30.497 回答
0

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

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

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

于 2010-08-07T18:01:13.763 回答