GWT模块重新启动导致内存不足错误

时间:2013-04-13 19:54:04

标签: google-app-engine gwt

我正在开发一个GWT应用程序,我在eclipse中遇到了在开发模式下测试的问题。

当我更改客户端代码时,我刷新浏览器页面(F5)以重新加载模块。每次我这样做(代码是否已更改),eclipse中的“开发”选项卡显示“模块xxxx已加载”的新项目符号。同样,根据任务管理器,每次执行此操作时,javaw.exe主机进程会增加大约1MB的内存。最终(稍后刷新10-20次),页面无法加载,“开发模式”选项卡显示此错误:

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

我可以通过停止并重新启动服务器来解决这个问题(不是开发者模式选项卡中的小刷新按钮,而是红色停止按钮),但是然后必须重新验证模块,这需要一段时间。似乎eclipse没有意识到当我重新加载一个新模块时我已经完成了旧模块。我正在观察一个全新的GWT项目的相同行为,所以我不认为这是我的代码。有人知道如何解决这个问题吗?

编辑:请参阅下面的两个答案,了解可能的解决方案。

2 个答案:

答案 0 :(得分:7)

默认设置gwt dev模式使用是最小的,所以你很快就会遇到内存不足。

enter image description here

从这里你可以看到permgenspace是低的,如果你在短的周期内刷新20次,它将会耗尽内存。

您可以先使用以下vmargs开始:

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

但是,正如enrybo指出,如果你的应用程序增长,它需要更多的内存:

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

答案 1 :(得分:2)

你可以做的事真的不多。正如您所提到的,您可以增加内存但最终即使分配更多内存也会遇到同样的问题。

我建议您尝试在Super Dev Mode中投放,但在这种情况下,您需要将您正在使用的SDK更新为2.5.1+。使用超级开发模式,您的浏览器不需要插件,因为它实际上将运行真正的Javascript。您甚至可以在浏览器中调试,但查看Java源代码(使用源映射)。

相关问题