XX:MaxPermSize有或没有

我们碰到的一个Java.lang.OutOfMemoryError:PermGen space的错误,看着Tomcat的JVM参数,可以比其他-Xms-Xmx PARAMS我们还指定-XX:MaxPermSize=128m 。 经过一番分析后,我可以偶尔看到在PermGen空间中发生的垃圾收集,从而使其无法运行。

我的问题是:除了增加-XX:MaxPermSize ,如果我指定了-XX:PermSize什么-XX:PermSize ? 我知道总的内存中,然后将XMX + MaxPermSize参数 ,但是否有其他原因-XX:PermSize时, 不应-XX:MaxPermSize指定?

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

PS。 JVM是HotSpot 64位服务器VM版本16.2-b04


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


通过播放参数-XX:PermSize-Xms ,可以调整应用程序启动的性能。 我最近没有看过它,但几年前, -Xms的默认值就像32MB(我认为),如果您的应用程序需要更多的时间,它会触发一些填充内存循环 - full垃圾收集 - 增加内存等,直到它加载了它需要的所有东西。 此周期对启动性能可能不利,因此立即分配所需的数量可以改善启动。

类似的周期适用于永久代。 因此,调整这些参数可以改善启动(等等)。

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

与往常一样:进行不重要的测量以证明您的更改实际上可以提高整体性能(例如,改善启动时间对于应用程序使用期间的性能可能是灾难性的)


如果您正在进行一些性能调整,通常建议将-XX:PermSize-XX:MaxPermSize设置为相同的值以提高JVM效率。

以下是一些信息:

  • 支持x86和amd64平台上的大页面堆
  • Java支持大内存页面
  • 设置永久代的大小
  • 如果您使用CMS GC还可以指定-XX:+CMSClassUnloadingEnabled以启用班级卸载选项。 它可能有助于降低Java.lang.OutOfMemoryError: PermGen space的概率

    链接地址: http://www.djcxy.com/p/82843.html

    上一篇: XX:MaxPermSize with or without

    下一篇: PermGen elimination in JDK 8