-XX:MaxPermSize 带或不带 -XX:PermSize

2022-01-16 00:00:00 jvm java jvm-hotspot permgen

我们遇到了 Java.lang.OutOfMemoryError: PermGen space 错误并查看了除 -Xms- 之外的 tomcat JVM 参数Xmx 参数我们还指定 -XX:MaxPermSize=128m.经过一些分析后,我可以看到 PermGen 空间上偶尔会发生垃圾收集,从而避免它运行满.

We've run into a Java.lang.OutOfMemoryError: PermGen space error and looking at the tomcat JVM params, other than the -Xms and -Xmx params we also specify -XX:MaxPermSize=128m. After a bit of profiling I can see occasionally garbage collection happening on the PermGen space saving it from running full.

我的问题是:除了增加 -XX:MaxPermSize 如果我也指定 -XX:PermSize 会有什么不同?我知道总内存将是 Xmx+maxPermSize 但是还有其他原因为什么 -XX:PermSize 应该 不 在 -XX:MaxPermSize 指定了吗?

My question is: other than increasing the -XX:MaxPermSize what would be the difference if I specify as well -XX:PermSize? I know the total memory then would be Xmx+maxPermSize but is there any other reason why -XX:PermSize should not be there when -XX:MaxPermSize is specified?

如果您有处理这些 JVM 参数的实际经验,请分享.

Please do share if you have real-world experience dealing with these JVM parameters.

ps.JVM 是 HotSpot 64bit Server VM build 16.2-b04

ps. The JVM is HotSpot 64bit Server VM build 16.2-b04

推荐答案

-XX:PermSize 指定将在JVM启动期间分配的初始大小.如有必要,JVM 最多会分配 -XX:MaxPermSize.

-XX:PermSize specifies the initial size that will be allocated during startup of the JVM. If necessary, the JVM will allocate up to -XX:MaxPermSize.

相关文章