博客 > 迎刃而解> 解决tomcat内存不足的问题:PermGenSpace 2019年08月29日 11:38:17
公司的tomcat使用了一段时间,突然一天遇到报错:PermGen Space
。一看是内存不足了,解决其实也特别简单,但是要弄清为什么,这个才是应该做的。
后来在百度中看到这篇文章,从中收获不小。点此去原文:https://blog.csdn.net/tengdazhang770960436/article/details/51776684
最近做项目碰到了让我纠结的问题,tomcat服务器运行一段时间,总是会自动报异常:java.lang.OutOfmemoryError: PermGen Space
的错误,导致项目无法正常运行。
PermGen Space
:指的是内存的永久保存区,该块内存主要是被JVM
用来存放 class 和 mete 信息的,当 class 被加载 loader 的时候就会被存储到该内存区中,与存放类的实例的heap区不同,java中的 垃圾回收器GC 不会在主程序运行期对 PermGen space 进行清理。
./bin/shutdown.sh
而是使用 kill -9 xxx
直接杀掉,这样的话,存在 PermGen space 里面的内存是不会被释放
的,这样多长进行 kill 之后,就会导致系统的内存被渐渐吃完了,直到最后 tomcat 报错。我想说这里边说的第二条,就正是我们常用的关闭方式,因为再没有比这更快速高效的关闭方式了,但是就是因为一次次的省事儿,才导致了最终的爆发。
那么修改 TOMCAT_HOME/bin/catalina.bat
文件
在echo "using CATALINA_BASE:$CATALINA_BASE"上面加入这一行内容: set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128m -XX:MaxPermSize=512m
则修改 TOMCAT_HOME/bin/catalina.sh
:
JAVA_OPTS="$JAVA_OPTS" -server -XX:PermSize=128m -XX:MaxSize=512m
在 %_EXECJAVA% %JAVA_OPTS% 后面添加 -Xms=256m -Xmx512m
注意:前后后有空格的
例如: %_EXECJAVA% %JAVA_OPTS% -Xms=256m -Xmx512m(空格)后面的内容不变
echo 3 > /proc/sys/vm/drop_caches
关于 drop_caches 内容可以参考:https://blog.csdn.net/tengdazhang770960436/article/details/51776781
© 2018 www.qingketang.net 鄂ICP备18027844号-1
武汉快勤科技有限公司 13554402156 武汉市东湖新技术开发区关山二路特一号国际企业中心6幢4层7号
扫码关注,全站教程免费播放
订单金额:
支付金额:
支付方式: