2013-04-13 49 views
4

我正在開發一個GWT應用程序,並且在eclipse中的開發模式下測試有問題。GWT Modlue重新啓動會導致內存不足錯誤

當我更改客戶端代碼時,我刷新瀏覽器頁面(F5)以重新加載模塊。每次我這樣做時(不管代碼是否已經改變),eclipse中的Development Tab顯示了一個新的項目符號「Module xxxx loaded」。根據任務管理器的說法,每次我這樣做時,javaw.exe主機進程都會增加大約1MB的內存。最終(10-20後刷新),頁面加載失敗和發展模式選項卡顯示此錯誤:

Out of memory; to increase the amount of memory, use the -Xmx flag at startup (java -Xmx128M ...)

我可以通過停止和重新啓動服務器(而不是在小刷新按鈕解決這個問題開發者模式選項卡,但紅色停止按鈕),但它然後模塊必須重新驗證,這需要一段時間。看來eclipse並沒有意識到我已經完成了舊模塊,當我重新加載一個新的。我正在用一個全新的GWT項目觀察同樣的行爲,所以我不認爲它是我的代碼。有沒有人知道一種方法來解決這個問題?

編輯:見以下兩個答案可能的解決方案。

+0

很顯然,我意識到我可能只是增加了內存,但這個過程和日食已經每個都拿了1/2 GB,所以我真的不想給他們更多的記憶。 – thomas88wp

+0

4GB內存的相關虛擬機參數是什麼 – Jagadeesh

回答

7

gwt dev模式使用的默認設置是最小值,所以您很快就會發現內存不足。

enter image description here

從這裏就可以看出,permgenspace是低,如果你在很短的periode刷新20次,將走出去的記憶。

您可以通過以下vmargs啓動:

-Xms512m -Xmx512m -XX:MaxPermSize=256M -XX:+UseParallelGC 

但作爲enrybo指出,如果你的應用程序的增長需要更多的內存:

-Xms512m -Xmx1g -XX:MaxPermSize=256M -XX:+UseParallelGC 
+0

4GB內存的相關VM參數是什麼? – Jagadeesh

2

實際上你並沒有那麼多。正如你所提到的,你可以增加內存,但最終你會遇到同樣的問題,即使有更多的內存分配。

我建議你嘗試運行在Super Dev Mode,但在這種情況下,你需要更新你使用的SDK到2.5.1+。使用超級開發模式,您的瀏覽器不需要插件,因爲它實際上會運行真正的Javascript。你甚至可以在你的瀏覽器中調試,但看看你的Java源代碼(使用源地圖)。

+0

感謝您的建議!我也會嘗試一下。 – thomas88wp

相關問題