调试 GWT 应用程序时 Eclipse 挂起

标签 eclipse debugging gwt

我们正在使用 JAVA GWT-P 框架(版本 2.4)开发我们的 Web 应用程序。我们使用 Eclipse(版本 3.7)Indigo 作为开发 GUI。当我们调试应用程序时,Eclipse 通常会挂起,令人惊讶的是,这是一种随机行为。

这种情况不仅仅发生在程序的一部分中。任何时候,当我们调试时,Eclipse 都会卡在不同的模块中。

为了解决这个问题,我们尝试使用不同的操作系统,例如Windows XP(开发GUI:Eclipse版本3.7 Indigo),Fedora Version 16(带开发GUI:Eclipse版本Helios Service Release 2),Cent OS(带开发GUI) :Eclipse 版本 Helios Service Release 2)。但运气不好。

任何人都可以帮我决定我们应该使用哪个操作系统、Eclipse 或版本,以便能够解决挂起的问题吗?

最佳答案

使用至少 8G RAM、四核的机器进行 GWT 开发。任何低于此的事情都将是灾难性的且毫无成效的。

理想情况下是 8 核、12 GB。

  • 在启动时增加 Eclipse jvm 虚拟机堆大小最大值。 默认的eclipse启动是256M或512M。至少应该是768M。我试过1024M 仅比 768M 稍有差别。我发现900M好像是 在我的案例中使用最多的。

  • 您可能还需要增加 Permgen 内存分配。我认为 permgen 空间用于存储类定义,并且永远不会 垃圾收集。我想当我的 eclipse 无限期地挂起时 当没有更多的永久代空间来存储新的类定义时。

我从来没有必要重新定义 Eclipse 的堆栈空间分配。

您可以通过 google 来查找用于定义内存分配的 jvm 启动参数。例如-Xmx等

  • 最初仅针对单个浏览器进行开发。决定使用 FF 或 Chrome 作为您的开发浏览器。然后将入口点 gwt.xml 调整为 设置该浏览器的用户代理属性。谷歌在gwt上设置 属性用户代理。我发现仅针对一种浏览器进行编译, 大大加快了编译速度。

  • 永远不要存储您的项目、源文件、资源或库 由编译器在网络或 USB 驱动器中访问。你所有的 可编译/可包含的资源应该位于您的本地驱动器上。

尝试使用maven或其他工具进行依赖管理,这样您就不需要通过网络访问您的jar或依赖项目。

  • 永远不要让您的发展战略因 取决于实时项目的依赖关系。拥有 50 人或以上的工作空间 项目是灾难,意味着开发团队陷入危机。 强制和持久的编译、项目扫描 eclipse 背景对 eclipse 的性能造成巨大影响。

  • 尝试禁用尽可能多的验证。例如,禁用 html 和 JavaScript 验证。

如果您有大量服务器端项目...... 您需要重新架构您的开发策略,将 50 - 100 个项目聚集到项目包中,以便每个项目包的可编译/可验证项目成员不超过 20 个(理想情况下少于 5 个项目)。每个包都按版本卡住并打包为 jar。仅使用 jar 进行开发依赖项。

您的程序员需要学会不要有在包含 200 个项目的工作空间上工作的冲动。增强功能是为每个项目包的 bugzilla 保留的。拥有 200 个项目工作空间是糟糕的项目管理。让 Eclipse 时不时变慢会浪费程序员的时间。

  • 有足够的临时空间(或者对于 Windows,有足够的闲置空间) 用户磁盘)。我遇到过磁盘空间不足的情况 编译器缓冲/缓存导致速度变慢和挂起。拥有 5G 空闲空间是最小的——越多越好,以便 无需清除垃圾箱或搜索要删除的文件或 清除 GWT 编译器生成的临时文件。 5G仍有闲置空间 非常不方便。

根据 AFAI 的经验,Windows 7/Vista 或 Linux 都没有太大的性能差异,只是 Eclipse 在 Windows 上启动速度似乎慢得多。

  • 因此,如果您知道如何调整您的防病毒软件,也许您应该 告诉防病毒软件跳过扫描工作区和项目文件夹。

  • 除非您有 8 核 12GB 机器,否则您应该禁用大部分 Windows 空气动力学,透明度。但你需要保持 Windows 合成 (否则你会因为看到不好的字体而毁掉你的视力)。

关于调试 GWT 应用程序时 Eclipse 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11297733/

相关文章:

java - 为 GWT css 类启用混淆吗?

java - JSR-308 : Clarification on Nonnull, ParameterAreNonnullByDefault 以及 Eclipse Kepler 检测它的方式

eclipse - 使用maven依赖项开发eclipse插件

java - 在javadoc中实现opencv的clahe时需要解决我的错误

android - 如何判断哪些线程产生了所有垃圾?

google-app-engine - GWT SSLContext.setDefault(SSLContext) 码头异常

java - Eclipse Luna 的 Google 插件不显示图标

ios - 有没有办法记录对给定类的每个方法的每次调用?

sql-server - 如何在没有CLR的情况下调试SQL Server 2008中的存储过程?

events - 在 GWT 应用程序中,我应该使用不同的事件(和事件处理程序)来切换到每个 View 吗?