Tomcat8 Caused by: java.lang.OutOfMemoryError: PermGen space错误解决方法

来源:互联网 发布:战舰世界德克萨斯数据 编辑:程序博客网 时间:2024/06/06 13:07
PermGen space错误解决方法 java.lang.OutOfMemoryError: PermGen space

  简单作个笔记:

  堆内存分配:

  -Xms   JVM初始分配的内存由-Xms指定,默认是物理内存的1/64

  -Xmx  JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4;

  默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。

  因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。

  非堆内存分配

  -XX:PermSize    JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64

  -XX:MaxPermSize XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4

  注意:

  参数中

  -Xms的值要小于-Xmx

      -XX:PermSize的值要小于-XX:MaxPermSize
    -Xmx的值和-XX:MaxPermSize的总和应不超过JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存

  -vmargs -Dosgi.requiredJavaVersion=1.5 -Xms512m -Xmx1024m -XX:PermSize=256M -XX:MaxPermSize=512M

  修改catalina.bat

  添加

  JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1536m -Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC" JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms512m -Xmx512m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC" 修改TOMCAT_HOME/bin/catalina.sh 在“echo "Using CATALINA_BASE:  $CATALINA_BASE"”上面加入以下行: JAVA_OPTS="-server -Xms800m -Xmx800m  -XX:MaxNewSize=256m"

  修改TOMCAT_HOME/bin/catalina.sh
在“echo "Using CATALINA_BASE:  $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -Xms800m -Xmx800m  -XX:MaxNewSize=256m"

  三、实例,以下给出1G内存环境下java jvm 的参数设置参考:

  JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "

  Caused by: java.lang.OutOfMemoryError: Java heap space

  解决方法:设置TOMCAT的内存大小
1.MyEclipse
Window-->Preference-->MyEclipse-->Application Servers-->Tomcat-->Tomcat 6.x-->JDK-->Optional Java VM arguments下填上:
-Xms256m -Xmx512m -XX:PermSize=256m -XX:MaxPermSize=600m
2.Window系统
2.1.编辑tomcat的catalina.bat文件,在第一行的后面增加一句:
set JAVA_OPTS=-server -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M



------------------------------------------

动报错:Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds


我们找到当前工程的workplace目录,然后按下面的操作:
找到workspace\.metadata\.plugins\org.eclipse.wst.server.core\servers.xml文件。
<servers>
<server auto-publish-setting="2" auto-publish-time="1" configuration-id="/Servers/Tomcat v6.0 Server at localhost-config" deployDir="wtpwebapps" hostname="localhost" id="Tomcat v6.0 Server at localhost" name="Tomcat v6.0 Server at localhost" runtime-id="Apache Tomcat v6.0" server-type="org.eclipse.jst.server.tomcat.60" server-type-id="org.eclipse.jst.server.tomcat.60" start-timeout="45" stop-timeout="15" testEnvironment="true" timestamp="3"/>
</servers>

把 其中的start-timeout="45" 改为  start-timeout="100" 或者更长,根据不同同学的工程大小来设置。
最后重启eclipse就可以了。


0 0
原创粉丝点击