具有可突发RAM的vServer上的Java堆空间Xmx Xms

时间:2011-08-02 20:23:23

标签: java performance jvm-arguments minecraft

我们运行一台Minecraft服务器,该服务器依赖于具有1GB保证RAM和4GB可突发RAM的vServer上的Java。

我们使用带有php / mySQL的lighttpd网络服务器以及实际的Minecraft服务器运行Debian 6.0(Squeeze)Minimal(64Bit)。我们目前已将所有设置保持在1GB保证RAM范围内,但似乎我们没有以这种方式利用可突发RAM,我们也不知道如何(以及如果?)我们应该这样做。

我们目前使用以下字符串加载服务器:

 /opt/java/jre/bin/java -Xmx880M -Xms880M
                        -XX:+UseConcMarkSweepGC
                        -XX:+CMSIncrementalPacing
                        -XX:ParallelGCThreads=2
                        -XX:+AggressiveOpts
                        -jar craftbukkit.jar nogui

我们为Minecraft分配880M(我们认为?),剩下的是为系统,网络服务器等预留的。我们如何优化这种设置?将这个初始启动分配到1GB以及我们的可突发RAM中是否有意义?有没有办法让Java或系统自己处理这个问题,比如在高峰时间需要超过880M,最大为4GB?由于无法保证可突发的RAM,如果在需要它时它不可用会发生什么?谢谢!

2 个答案:

答案 0 :(得分:1)

  

我们如何优化此设置?

这取决于。您应该首先分析此进程的内存使用情况。添加

-verbose:gc:file=gc_results.out

到您的命令行。您可以使用HPjmeter之类的工具打开生成的gc数据文件。您应该根据平均/峰值内存使用情况调整堆。没有一个适合所有政策的“最优”。首先,检查您平均花费在垃圾收集上的时间。一个好的经验法则是< 7%。您多久触发一次Full GC?你的堆满了长生物,还是被大量的短命物体轰炸?这些问题应该会推动你的决策。

答案 1 :(得分:0)

服务器将花费大部分时间来分配最大RAM。我对“可爆”RAM的理解是 - 不要指望它,但如果你简单地要求它,它可能不会崩溃。在这种情况下,您不希望JVM挂在可突发的RAM上。您指定的配置似乎正确。