开发者社区> 问答> 正文

java.exe占用的内存多,java.lang.OutOfMemoryError PermGen space报错

落地花开啦 2016-03-24 11:05:26 1002

最近才发现TOMCAT启动一段时间后,总是出现java.lang.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的时候。根据提示,修改TOMCAT_HOME/bin/catalina.sh
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
`JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m
-XX:MaxPermSize=128m -Djava.awt.headless=true "`
仍然不行。
打开任务管理器查看内存使用情况,发现,刚启动TOMCAT时JAVA.EXE使用内存在35M左右,后打开网页浏览,每点一个链接JAVA.EXE占用的内存不断增加,不会降低,即便是关闭所有浏览页内存也不会降,当内存占到140多M时出现java.lang.OutOfMemoryError PermGen space这个错误,我想内存占用不应该只增不降,应该是本人代码的问题,但不知如何下手去查,请各位老师指点,谢谢了……

Java 应用服务中间件
分享到
取消 提交回答
全部回答(1)
  • 落地花开啦
    2019-07-17 19:12:19

    内存溢出
    1、检查代码是否open了本地IO,而且没有及时release
    2、检查代码是否存在不合理的递归程序
    3、文件(图片)上传程序是否有问题?
    4、应用是否包含了较大的对象(如包含超大文本),而且被单例实例持续引用着
    5、最后用JProfile跟踪下类的实例引用情况
    6、最笨的办法就是停止所有功能,然后逐个加上去并排查。

    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题