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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (87)

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

我的问题是:除了增加-XX:MaxPermSize如果我也指定-XX:PermSize?我知道总记忆会是XMX+maxPermSize但还有什么别的原因-XX:PermSize-XX:MaxPermSize是指定的?

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

PS。JVM是HotSpot 64位服务器VM构建16.2-B04

提问于
用户回答回答于

通过使用参数作为-XX:PermSize-Xms您可以调优应用程序的启动(例如)的性能。我最近没有看过,但几年前的默认值是-Xms类似于32 MB(我认为),如果您的应用程序需要的更多,它将触发许多填充内存的循环-满垃圾收集-增加内存等,直到它加载了所需的一切。这个循环可能会对启动性能造成损害,因此立即分配所需的数量可以改善启动。

一个类似的循环适用于永久世代。因此,调整这些参数可以改善启动(除其他外)。

警告JVM在分配内存、划分伊甸园空间和老一代等方面有很多优化和智能,所以不要做诸如-Xms等于-Xmx-XX:PermSize等于-XX:MaxPermSize由于它将删除一些优化,JVM可以应用于它的分配策略,从而降低应用程序的性能,而不是改进它。

和往常一样:做一些重要的测量来证明您的更改实际上提高了总体性能(例如,改进了启动时间)。在应用程序的使用过程中对性能造成灾难性影响)

用户回答回答于

-XX:PermSize指定在JVM启动期间分配的初始大小。如果有必要,jvm将分配到-XX:MaxPermSize

扫码关注云+社区

领取腾讯云代金券