什么是jvm设置的最佳参数

时间:2015-10-16 20:32:13

标签: java jvm

我是java和jvm的新手。我有一个jvm设置:

JAVA_OPTS=""-Xmx3072m""
JAVA_OPTS=""${JAVA_OPTS} -XX:-UseVMInterruptibleIO""
JAVA_OPTS=""${JAVA_OPTS} -XX:NewSize=256m""
JAVA_OPTS=""${JAVA_OPTS} -XX:MaxNewSize=256m""
JAVA_OPTS=""${JAVA_OPTS} -XX:PermSize=256m""
JAVA_OPTS=""${JAVA_OPTS} -XX:MaxPermSize=256m""
JAVA_OPTS=""${JAVA_OPTS} -XX:+DisableExplicitGC""

有人可以告诉我这些是否合适以及任何改进的余地。是否有任何jvm设置缺少以获得最佳性能?

我感谢您的任何见解。

2 个答案:

答案 0 :(得分:1)

如果有一组"最佳参数"那么JVM开发人员会将其作为默认值包含在内,并且不会提供指定不同参数的选项。这意味着用户会更快乐,而且对他们的工作也会减少!

存在这些参数的事实表明JVM开发人员知道一组参数值不适合所有应用程序 - 因此,他们投入了大量精力允许你改变它。

您当前指示的参数适用于需要大量RAM的服务器,想要设置大的perm空间(可能是为了覆盖类加载器错误;是您正在运行的webapp吗?),而不是希望IO被vm中断(尽管该特定标志似乎仅适用于Solaris)。你可以在这里look up all arguments

答案 1 :(得分:1)

你没有提到你正在使用的jvm。如果您使用的是java 8,则permsize和maxpermsize已被弃用,并且分别被-XX:MetaspaceSize和-XX:MaxMetaspaceSize选项取代。 您将newSize和maxNewSize设置为相同的值,而不是使用选项-Xmnsize,它将newSize和maxNewSize设置为相同的值。

DisableExplicitGC是在代码中禁用System.gc()调用,因此如果要禁用这些调用,可以考虑将其从代码中删除。