您的位置:首页 > 编程语言 > Java开发

java.lang.OutOfMemoryError: PermGen space

2016-03-14 15:08 211 查看
具体解决方法:

方法一:

如果自己用的myeclipse 工具,调整jdk大小

1.window-->Preferences...-->MyEclipse-->Application Servers-->Tomcat,

2. 选中你安装的tomcat版本,选中下面的JDK,在右边的Optional
Java VM arguments 文本框中输入:

-Xmx256M
-Xms256M -XX:MaxPermSize=256m

方法二:

在tomcat的bin目录下修改catalina.sh

在echo "Using CATALINA_BASE: $CATALINA_BASE"前加上

JAVA_OPTS="-server -XX:PermSize=256m -XX:MaxPermSize=512m"

# ----- Execute The Requested Command -----------------------------------------
JAVA_OPTS="-server -XX:PermSize=256m -XX:MaxPermSize=512m"

# Bugzilla 37848: only output this if we have a TTY
if [ $have_tty -eq 1 ]; then
echo "Using CATALINA_BASE:   $CATALINA_BASE"
echo "Using CATALINA_HOME:   $CATALINA_HOME"
echo "Using CATALINA_TMPDIR: $CATALINA_TMPDIR"


说明:

-vmargs

-Xms256m //配置堆内存的最小值

-Xmx256m //配置堆内存的最大值

-XX:PermSize=128M //配置非堆内存的最小值

-XX:MaxPermSize=128M //配置非堆内存的最大值

参数中-vmargs的意思是设置JVM参数,所以后面的其实都是JVM的参数了

堆内存的分配

JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。

非堆内存的分配

JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: