Tomcat中的多个Web应用程序(使用相同的jar)导致perm gen OOM

时间:2014-11-21 11:01:05

标签: java tomcat

我正在运行带有两个Web应用程序实例的Tomcat,这两个应用程序的开发是独立的。当我启动tomcat服务器并开始访问应用程序时,它会抛出Perm Gen OOM异常或堆空间OOM异常。这两个应用程序都使用相同的jar,这些jar捆绑在webapps的相应lib文件夹中。由于课程的重复加载导致了烫发吗?如何避免Perm Gen和Heap空间异常?

编辑:我希望在这种情况下遵循最佳实践。请同样告知。

注意:我在带有12 GB内存的2008 Server上运行tomcat。服务器还托管其他tomcat服务器和DB的MSSQL服务器。

2 个答案:

答案 0 :(得分:0)

您必须增加-XX:PermSize -XX:MaxPermSize大小以避免在tomcat的配置文件中出现问题。理想情况下它将是256,只需将其增加到512.

答案 1 :(得分:0)

此类错误当然可能是由类加载器内存泄漏(https://wiki.apache.org/tomcat/MemoryLeakProtection)导致的内存泄漏引起的。

您可以尝试增加permgen空间(-XX:PermSize<size> -XX:MaxPermSize<size>)并查看它是否有帮助。如果它只是降低了OOM的频率,那么你很可能会发生内存泄漏。不幸的是,找到解决方案并不容易。我通过在应用程序重新部署时重新启动tomcat来避免这种情况,这种策略可能适用于您,也可能不适合您。