我在我们的 Tomcat 测试服务器上遇到了一些令人讨厌的 OutOfMemory 异常。我们的 Web 应用程序在客户端使用 GWT 2.3 和 GXT,在服务器端使用 Spring 3.0,Hibernate 3.6.3 和 JPA。
我用 VisualVM 做了一些堆转储,然后用 Memory Analizer Tool 打开它们,看看是什么占用了这么多空间。今天,堆占用了 900-950MB 的 1GB 可用空间,并且在 org.apache.catalina.WebAppClassLoader (680MB) 中积累了最多的内存,其中包含 com.google.gwt.core.client.impl.WeakMapping 的巨大 671 MB 条目(671MB)。我看到有很多 ProxyAutobean 类型的对象以及很多 Hibernate 实体。
我在网上搜索并找到了一些 适用于我的案例的内容,但我不确定是否/如何以这种方式解决它而无需升级到更高版本的 GWT。看起来,这种泄漏是由我们在代码中使用的实体/代理之间的循环引用引起的。
请问有什么建议吗?谢谢