Tomcat中的Permgen OOME通常是由于以下两种情况的结合:
热调动。
内存泄漏,其中某些引用导致旧的类加载器及其所有相关对象保持可达。
因此,有两种方法可以避免此问题:
不要热调。或重新启动每几个热部署。
跟踪并修复与类加载器有关的存储泄漏。
增加permgen的大小并不能解决问题,但是可能会增加OOME问题之间的间隔。(或者允许您减少关闭/重新启动Tomcat的次数。)
你的问题:
1)是Tomcat使用的整个内存应该是256MB,还是Tomcat由于其他原因消耗了其他内存?
往上看。尽管Tomcat特别容易受此影响,但它并不是特定的Tomcat。(显然,由于我使用了动态代理,因此Hibernate可能也太…了。)
2)如何监视Tomcat使用的内存以避免达到PemGen最大大小?
有一些方法可以监视内存使用情况。例如附加代理。但是,这些不能解决问题。IMO,更改生产服务器的管理程序会更简单,因此您无需进行热重新部署。



