2010-07-30 241 views
30

我正在寻找运行Alfresco的JVM配置选项,主要是Alfresco Wiki上的this文档。其中一个建议是使用JVM标志-Xcomp-Xbatch。这样做的理由是:Java虚拟机调优-Xbatch和-Xcomp

如果您希望使用Hotspot预编译类,您可以添加[-Xcomp和-Xbatch]。但是,这会显着增加服务器启动时间,但会突出显示未来可能会发生的缺失依赖关系。

从我有read elsewhere-Xcomp-Xbatch标志,我想知道他们是否真的带来任何好处。

  • -Xcomp获取HotSpot预先编译所有代码并进行最大化优化,从而完成虚拟机通过标准系统运行所需的任何分析。
  • -Xbatch停止后台编译,这意味着导致代码被编译的线程块,直到编译完成。但是,编译完成后,先前被阻止的线程将不会运行编译代码,it will still run the interpreted code。这是Java 6(Mustang)中的一个变化 - Mustang之前,只要编译完成,由编译代码保证在-Xbatch标志的存在下编译的线程被阻止运行。因此,我猜测-Xbatch标志的建议是在较旧的虚拟机上运行Alfresco的遗迹。

有没有人有任何想法?我的倾向是摆脱这两个标志,并依靠虚拟机来让事情正确。

我想添加两件事,首先我还没有访问一个Alfresco实例来测试这个,其次我真的不知道什么样的机器托管Alfresco除此之外查看其他配置选项,它必须是64位虚拟机。尽管如此,我希望社区能够从一般的热点调优角度提供一些有用的意见。

+0

Alfresco页面上的真实世界示例部分是2009年8月,它似乎是JDK 1.6? – shinynewbike 2010-08-03 12:47:33

+0

@ktaylorjohn是的,这是正确的,但我只是想知道-Xbatch和-Xcomp标志是否有所作为。 Alfresco似乎是唯一一个在JVM测试和类似领域之外提到这些标志的项目。 – Rich 2010-08-03 13:35:35

回答

21

一般来说,最好让HotSpot编译器自行调整。即使使用服务器虚拟机(-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),所以恕我直言,我会摆脱两者。

+0

链接是死的顺便说一句 – Eugene 2018-02-26 21:22:19

0

Alfresco是企业内容管理。我不确定旗帜如何影响它的表现。然后在同一页上说一个音符..但是,这将显着增加服务器启动时间,但会突出显示缺少的依赖关系,以后可能会被点击。 ...

恕我直言,作者并不是真的意味着性能增益。他/她将其作为手段来检查所有依赖关系是否到位。