最近我们的生产服务器:tomcat6经常挂起并抛出以下错误“java.lang.OutOfMemoryError:PermGen space”,它正在运行带有4GB RAM的Windows 2003服务器。 25该应用程序正在该服务器上运行,看起来它已经过载,但它之前工作正常。我试图清理内存泄漏,如关闭数据库连接,增加堆内存与JAVA_OPTS。我还是找不到确切的根本原因。另外我们的Tomcat6没有配置管理器应用程序,因此我无法运行内存/运行状况检查。请指导我解决这个问题。
答案 0 :(得分:1)
您必须增加 PermGen空间修改JAVA_OPTS
并使用选项 XX:MaxPermSize (例如-XX:MaxPermSize=1024m
)。增加堆大小( Xmx )在您的情况下无用。
我还建议使用像<{3}}这样的监控工具(APM)来调查内存使用情况,并根据需要调整JAVA_OPTS
。
有关PermGen空间及其垃圾收集机制的详细信息,请查看以下答案:Glowroot