[SoapUI]java.lang.OutOfMemoryError: PermGen space

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。说说为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。

在调用SoapUI的时,有时候会遇到SoapUI抛错,比如:

com.eviware.soapui.impl.wsdl.mock.DispatchException: java.lang.OutOfMemoryError: PermGen space
com.eviware.soapui.impl.wsdl.mock.DispatchException: java.lang.OutOfMemoryError: PermGen space

从SoapUI的网站上找到了答案

If you run into PermGen errors (for example if you are using a lot of groovy scripts), then you might need to adjust that setting as well, add a
-XX:MaxPermSize

解决方法:
手动设置MaxPermSize大小
setting to the above line:(–\SmartBear\SoapUI-Pro-5.1.2\bin\securitytestrunner.bat)
set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx768m -XX:MaxPermSize=128m -Dsoapui.properties=soapui.properties

一般的ini文件设置主要包括以下几项:
-vmargs
-Xms40m
-Xmx256m
-XX:PermSize=64M
-XX:MaxPermSize=128M
以下解释其意思。
-vmargs:说明后面是VM的参数
-Xms40m:虚拟机占用系统的最小内存
-Xmx256m:虚拟机占用系统的最大内存
-XX:PermSize:最小堆大小。一般报内存不足时,都是说这个太小,
堆空间剩余小于5%就会警告,建议把这个稍微设
大一点,不过要视自己机器内存大小来设置
-XX:MaxPermSize:最大堆大小。这个也适当大些
所以若出现问题,首先请调整 -Xms40m:将其设置的小一些,就ok了,1g内存推荐设置为:
-vmargs
-Xms128M
-Xmx512M
-XX:PermSize=256M
-XX:MaxPermSize=512M
其中-XX:PermSize=64M可以设置大一些,但不能超过MaxPermSize
-Xmx512M的5%为25.6M,理论上要求-Xmx的数值与-XX:MaxPermSize必须大于25.6M

猜你喜欢

转载自blog.csdn.net/tinaTing1/article/details/94553963