GWT在开发模式下运行缓慢。

27
我在使用Eclipse Galileo和最新的GWT 2.0版本开发模式,但它运行非常缓慢(我需要等待大约一分钟才能打开一个页面),但是编译后,在Tomcat 5.5上运行时我的应用程序效果很好。
我的代码不太重,我猜测这是由于操作系统或软件不一致性问题引起的,因为我之前也遇到过这个问题,但当我重新安装了Windows Vista SP2(我格式化了我的Windows驱动器并重新安装了它)后,我的问题解决了几天,然后又变得非常缓慢。
我没有在我的Windows机器上安装任何特殊软件,所以我真的不知道为什么会出现这个问题。有什么建议吗?

你使用哪个浏览器?在访问开发模式和应用程序部署在Tomcat时,是否使用相同的浏览器? - Ramiro González Maciel
7个回答

36

如果它变得异常缓慢,但之前速度更快,并且您正在进行调试,那可能是因为您在方法输入上设置了断点。即使没有触发断点,这也会使事情变得极其缓慢。尝试清除您的断点。


4
这是调试时的一个好的通用提示,即使使用普通的Java代码也可以。 - Guillaume
1
我在Filter和Servlet的“processCall”方法中遇到了断点问题。这为我节省了大量时间(应用程序启动只需2分钟,而不是5秒),但为什么会出现这种情况呢? - Michael Laffargue
我在我的GWT代码中设置了大约20个断点。在Eclipse的调试模式下运行非常非常慢。我删除了断点,现在它又回来了:非常快速! - Martin Magakian
移除断点后,调试模式非常流畅! - Jess

4
如果您正在使用smartgwt,请确保禁用firebug或类似工具。这会在开发模式下使您的浏览器变得非常缓慢。
至于NetBeans,确实有一个名为GWT4NB的GWT插件。但是IDE并不是您的问题 :)

我已经检查过 Firebug 并且它已被禁用。 我也认为 IDE 不是造成这个问题的原因,但是是什么导致了这个问题呢?真是个谜! - Ehsan Khodarahmi

3
第一次加载页面时,它会加载所有必要的Java代码(和JVM)。之后,每次刷新页面只会加载更改的Java代码,然后执行整个过程(我可能是错的)。所以,如果你每次想查看你所做的更改,都关闭浏览器再重新打开页面,那么速度会很慢。如果每次刷新页面,速度应该会很快(如果你所做的更改不是很大的话)。
Eclipse + GWT 2.0 不是导致速度慢的原因...(顺便说一下,如果我没记错的话,NetBeans没有GWT插件...)

不,关闭浏览器不能帮助我,我认为这个问题比关闭和重新打开或刷新浏览器要复杂一些!!! 我已经尝试过使用Firefox、Chrome和IE,所有浏览器都有同样的问题! - Ehsan Khodarahmi
当然我同意你的观点,Eclipse + GWT 2.0 不是它运行缓慢的原因 !!! 同时,NetBeans也没有相关插件。 - Ehsan Khodarahmi
不,你不应该关闭浏览器。正如Zwik所说,在初始加载之后(可能需要一分钟并使浏览器无响应),所有后续的刷新都应该非常快。如果情况不是这样的,那么我们可以进一步调查。 - Igor Klimer
不,后续刷新与初始加载一样慢甚至更慢,我正在使用smartgwt2.2,例如,获取到一个简单的网格需要大约1分钟(我猜这个问题可能与Jetty有关,你觉得呢?)。 - Ehsan Khodarahmi

3
从临时文件夹中删除GWT缓存,例如图片、RPC文件等,然后查看性能。这是在托管模式下变慢的原因之一。

3
这些GWT临时文件和文件夹在哪里? - J. Volkya

1
我发现在 GWT hosted mode 中,调试模式与非调试模式之间的性能差异很大。如果你正在使用调试模式,请尝试不使用调试模式来看看是否有所帮助。
初始页面加载可能会慢一些,但一旦开始运行,在浏览器上点击刷新按钮,只需几秒钟就可以重新加载更新后的项目。

是的,没错,在运行模式下浏览我的项目时,速度还可以。但问题出在哪儿呢? 我需要在调试模式下更快地执行它,因为这样缓慢的速度需要 100 年才能调试完一个应用程序!!! 有什么想法吗?! - Ehsan Khodarahmi
我不知道除了尽量减少使用调试模式的时间之外还有什么办法。我发现大多数情况下,我可以在不使用调试模式的情况下解决问题。 - gerdemb
1
有时候我可以在不使用调试模式的情况下解决问题,但是很多情况下我必须使用调试模式(例如无法指定任何断点或在运行模式下查看变量值)。因此,这不是解决方案,只是澄清问题! - Ehsan Khodarahmi

1

我遇到了类似的问题,发现问题是由于断点数量过多导致的。减少断点数量后性能得到了改善。


0

我遇到了与GWT相同的问题。现在我开始在firefox上进行测试了。第一次在firefox上运行调试时,速度很慢。

我在runconfig>gwt tab中将日志级别设置为'info'

所以,我重新启动了我的工作空间和firefox。然后是 'debug>myGWTapplication'

当你在调试模式下打开你的应用程序时,请等待浏览器插件连接。

这一次它不会在开发模式下写入所有日志行,并且速度更快。

我认为firefox和记录日志有所不同。现在我看不到太多的延迟。

还有,如上面的评论所述,请删除断点,我已经全部删除,只有在必要时使用。

编辑:在IE8上尝试过,速度也很快。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接