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效率。 
以下是一些信息:
  如果您使用CMS GC还可以指定-XX:+CMSClassUnloadingEnabled以启用班级卸载选项。  它可能有助于降低Java.lang.OutOfMemoryError: PermGen space的概率 
