OutOfMemory PermGen错误 - 获取此错误的方法

时间:2013-11-29 11:46:47

标签: java tomcat

是否有可能以其他方式在tomcat服务器上获取此错误,然后重新部署战争或编辑jsp文件?我们在服务器上遇到了这个错误,理论上我们没有重新部署。你知道从linux控制台监控PermGen的最佳解决方案吗?

4 个答案:

答案 0 :(得分:1)

permGen意味着永久生成,这是所有常量存储的地方,如字符串(在大多数情况下,在java 7之前)存储在此permgen上,一种摆脱它的方法是你只需增加内存使用

-XX:PermSize=512m

这就是我所做的,但是从你的场景中感觉有某种内存泄漏,我不知道如何检测它,有可用的框架,netbeans也提供应用程序分析支持。

以下是一些很好的链接 http://www.eclipse.org/tptp/home/documents/tutorials/profilingtool/profilingexample_32.html

http://www.ej-technologies.com/products/jprofiler/overview.html

https://netbeans.org/kb/docs/java/profiler-intro.html

答案 1 :(得分:0)

不一定是因为重新部署或更多文件编辑。 服务器上的Java应用程序更有可能耗尽所有已分配的内存。 所以是的,有可能以其他方式在tomcat服务器上获取此错误,然后重新部署战争或编辑jsp文件。

在监控方面,您可能对此API感兴趣:http://docs.oracle.com/javase/7/docs/api/java/lang/management/MemoryMXBean.html

或者尝试在Google中输入tomcat monitor permgen来查找监控软件 - 正在返回大量结果。

答案 2 :(得分:0)

有一种远程监控VM的工具:http://visualvm.java.net/

答案 3 :(得分:0)

我记得Tomcat上的默认permgen非常低,如果你有一个体面的大小应用程序,有很多第三方依赖,这可能导致大量的类驻留在pergmen中。你可以合法地需要更多的pergmen空间,尝试增加它。