【问题标题】:GWT Modlue Restarts cause Out of Memory ErrorGWT 模块重新启动导致内存不足错误
【发布时间】:2013-04-13 19:54:03
【问题描述】:

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

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

【问题讨论】:

  • 显然我意识到我可以增加内存,但是进程和 eclipse 已经占用了 1/2 GB,所以我真的不想再给他们更多内存了。
  • 4GB RAM 的相关 VM 参数是什么

标签: google-app-engine gwt


【解决方案1】:

gwt 开发模式使用的默认设置是 minimum ,所以你很快就会遇到内存不足的问题。

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

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

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

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

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

【讨论】:

  • 4GB RAM 的相关 VM 参数是什么
【解决方案2】:

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

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

【讨论】:

  • 感谢您的建议!我也试试看。
猜你喜欢
  • 2016-10-23
  • 2011-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多