Tomcat PermGen space的解决方案

 时间:2024-10-13 03:21:49

Tomcat报告Causedby:java.lang.OutOfMemoryError:PermGenspace异常,开始以为是程序内存泄漏导致的内存溢出,网上查了一下,原来是另有原因,不过确实是内存溢出PermGenspace的全称是PermanentGenerationspace,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGenspace中,它和存放类实例(Instance)的Heap区域不同,GC(GarbageCollection)不会在主程序运行期对PermGenspace进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGenspace错误,这种错误常见在web服务器对JSP进行precompile的时候。如果你的WEBAPP下都用了大量的第三方jar,其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。

方法/步骤

1、堆内存分配:  -Xms JVM初始分配的内秽颢擤崮存由-Xms指定,默认是物理内存的1/64;  -Xmx JVM最坂桎搦矍大分配的内存由-Xmx指定,默认是物理内存的1/4;  默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。  因此服务器一般设置-Xms、-Xmx相等以避免在每次GC后调整堆的大小。  非堆内存分配  -XXermSize   JVM使用-XXermSize设置非堆内存初始值,默认是物理内存的1/64;  -XX:MaxPermSize由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。  注意:  参数中  -Xms的值要小于-Xmx,  -XXermSize的值要小于-XX:MaxPermSize;  -Xmx的值和-XX:MaxPermSize的总和应不超过JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存

2、==============================================解决方法:手动设置MaxPermSize大小设置参数:-Xms512m-Xmx1024m-XXermSize=256M-XX:MaxPermSize=512MTomcat中,修改TOMCAT_HOME/bin/catalina.sh(linux系统下start.sh会调用它来启动tomcat,windows下调用catalina.bat,修改类似)在文件头部注释后加入JAVA_OPTS='-Xms512m-Xmx1024m-XXermSize=256M-XX:MaxPermSize=512M'

3、解决方法:设置TOMCAT的内存大小1.MyEclipseWindow-->reference-->MyEclipse-->ApplicationServers-->Tomcat-->Tomcat6.x-->JDK-->OptionalJavaVMarguments下填上:-Xms512m-Xmx1024m-XXermSize=256M-XX:MaxPermSize=512M2.Window系统2.1.编辑tomcat的catalina.bat文件,在第一行的后面增加一句:setJAVA_OPTS=-server-Xms512m-Xmx1024m-XXermSize=256M-XX:MaxPermSize=512M

怎么把其他浏览器的设置导入到360浏览器里面? Notepad++文档顺序切换技巧分享 如何使用Microsoft Sync Toy Java 插入Excel工作表行或列 Edge浏览器如何显示密码?
热门搜索
大型挖掘机图片 香港城市图片 图片批量下载 电影爱的色放 带字图片大全唯美