这里需要解释为什么会内存益出: (1)这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen
space区域,它和和存放Instance的Heap区域不同。 (2) GC(Garbage
Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS 的话,就很可能出现PermGen
space错误。这种错误常见在web服务器对JSP进行pre compile的时候。 如果你的WEB
APP下都用了大量的第三方jar,其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了
解决方法:手动设置MaxPermSize大小 修改TOMCAT_HOME/bin/catalina.bat,在echo
"Using CATALINA_BASE: $CATALINA_BASE"上面加入以下行: JAVA_OPTS="-server
-XX:PermSize=64M
-XX:MaxPermSize=128m 建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以减少jar
文档重复占用内存
1。参数的含义
-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
堆内存分配JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。 JVM内存限制(最大值)首先JVM内存限制于实际的最大物理内存,假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。