2012-06-11 51 views
0

我在Tomcat測試服務器上遇到了一些令人討厭的OutOfMemory異常。我們的Web應用程序在客戶端使用GWT 2.3 & GXT,服務器端使用Spring 3.0,Hibernate 3.6.3 & JPA。GWT 2.3 WeakMapping/ProxyAutoBean內存泄漏

我用VisualVM做了一些堆轉儲,並用Memory Analizer Tool打開它們來查看佔用這麼多空間的東西。今天,這個堆佔用了1GB的900-950MB空間,最多的內存是在org.apache.catalina.WebAppClassLoader(680MB)中累積的,其中包含一個巨大的671MB的com.google.gwt.core.client.impl.WeakMapping條目(671MB)。我看到有很多類型爲ProxyAutobean的對象,還有很多Hibernate實體。

我在網上搜索並找到something這可能適用於我的情況,但我不確定是否/如何以這種方式解決此問題,而無需升級到更高版本的GWT。看起來,這種泄漏是由我們在代碼中使用的實體/代理之間使用循環引用引起的。

有什麼建議嗎? 感謝

回答

0

你可以嘗試「打補丁」的依賴(或者猴修補:添加修補類早些時候在類路徑),但它的方式更容易只是升級。

Request Factory有一個穩定的協議,所以你可以在客戶端使用GWT 2.3,在服務器端使用Request Factory 2.4;那麼您只需在客戶端實驗DevMode中的泄漏,而不是在服務器端進行實驗。

+0

非常感謝您的建議。但是,如果我嘗試僅升級RequestFactory部件,則會出現有關擴展ClientBundle的接口的驗證問題。如果我嘗試將GWT作爲整體升級到2.4,我在運行時會得到一個異常:「必須爲」myRequestFactory「RequestFactory類型運行RequestFactory ValidationTool。我寧願將GWT升級到2.4.0,你是否知道一個更簡單的方法來實現它並擺脫驗證RF問題? 「 – AndaP

+0

關於最後一條消息,請參閱http://code.google.com/p/google-web-toolkit/wiki/RequestFactoryInterfaceValidation –

+0

您好,我嘗試下載Springsource Toolsuite 2.6.1上的m2e-apt連接器,但是: 正在安裝的軟件:適用於Eclipse的Maven集成JDT APT 1.0.0 ..(org.jboss.tools.maven.apt.feature.feature.group 1.0.0 ..) 缺少需求:適用於Eclipse的Maven集成JDT APT Core 1.0。 0 ..(org.jboss.tools.maven.apt.core 1.0.0 ..)需要'bundle org.eclipse.m2e.core 0.0.0',但找不到 無法滿足依賴關係: From:Maven集成Eclipse JDT APT 1.0.0 ..(org.jboss.tools.maven.apt.feature.feature.group 1.0.0 ..) 收件人:org.jboss.tools.maven.apt.core [1.0.0 ..] – AndaP