0

我在我们的 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。看起来,这种泄漏是由我们在代码中使用的实体/代理之间的循环引用引起的。

请问有什么建议吗?谢谢

4

1 回答 1

0

您可以尝试“修补”您的依赖项(或猴子修补:在类路径的早期添加修补类),但升级更容易。

Request Factory 有一个稳定的协议,所以你可以很好地在客户端使用 GWT 2.3 和在服务器端使用 Request Factory 2.4;然后,您将只在客户端的 DevMode 中试验泄漏,而不是在服务器端的生产环境中试验。

于 2012-06-12T10:47:39.747 回答