4

我正在开发一个 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 项目中观察到相同的行为,所以我认为这不是我的代码。有谁知道解决这个问题的方法?

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

4

2 回答 2

7

gwt 开发模式使用的默认设置是 minimum ,因此您很快就会遇到内存不足的情况。

在此处输入图像描述

从这里你可以看到 permgenspace 太低了,如果你在短时间内刷新 20 次,它就会耗尽内存。

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

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

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

-Xms512m -Xmx1g -XX:MaxPermSize=256M -XX:+UseParallelGC
于 2013-04-13T21:00:57.293 回答
2

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

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

于 2013-04-13T20:53:07.000 回答