dim*_*sli 50 java jvm permgen jvm-hotspot
我们遇到了Java.lang.OutOfMemoryError:PermGen空间错误并查看了tomcat JVM参数,除了我们还指定的-Xms和-Xmxparams之外-XX:MaxPermSize=128m.经过一些分析后,我偶尔可以看到PermGen空间上发生的垃圾收集,使其无法完全运行.
我的问题是:除了增加-XX:MaxPermSize我指定的差异之外,还有-XX:PermSize什么呢?我知道总的内存中,然后将XMX + MaxPermSize参数,但是否有其他原因,-XX:PermSize应该不是的时候是有-XX:MaxPermSize规定的?
如果您有处理这些JVM参数的实际经验,请分享.
PS.JVM是HotSpot 64位服务器VM build 16.2-b04
tob*_*yer 44
-XX:PermSize指定在JVM启动期间将分配的初始大小.如有必要,JVM将分配最多-XX:MaxPermSize.
Mar*_*eel 25
通过使用参数-XX:PermSize,-Xms您可以调整应用程序的启动性能 - 例如 - 启动.我最近没有看过它,但几年后默认值-Xms是32MB(我认为),如果你的应用程序需要的不仅仅是它会触发一些循环的填充内存 - 完全垃圾收集 - 增加内存等,直到它加载了所需的一切.此循环可能对启动性能有害,因此立即分配所需的数量可以改善启动.
类似的循环适用于永久世代.因此,调整这些参数可以改善启动(以及其他).
警告 JVM在分配内存,划分eden空间和老一代等方面有很多优化和智能,所以不要做-Xms等于-Xmx或-XX:PermSize等于的事情,-XX:MaxPermSize因为它会删除JVM可以应用的一些优化因此,它的分配策略会降低您的应用程序性能,而不是改进它.
一如既往:进行非平凡的测量,以证明您的更改实际上总体上提高了性能(例如,改善启动时间对于应用程序的使用期间的性能可能是灾难性的)
如果你正在做一些性能调优它通常建议同时设置-XX:PermSize并-XX:MaxPermSize以相同的值,以提高JVM效率.
以下是一些信息:
如果使用,还可以指定-XX:+CMSClassUnloadingEnabled启用类卸载选项CMS GC.它可能有助于降低概率Java.lang.OutOfMemoryError: PermGen space