使用Eclipse IDE加速Tomcat调试模式

46

在非调试模式下,通过eclipse运行Tomcat正常工作,但在调试模式下却不行。当我尝试以调试模式启动Tomcat服务器时,控制台输出看起来一开始还好,但很快就开始变慢,并最终停止,将CPU占用率提高到了100%。我认为这并不重要,但以防万一 - 这是大约开始减速并最终停止时的控制台输出(停止指的是没有更多控制台输出,但仍然占用100%的CPU)。

2009-09-02 14:35:30,859 INFO   NONE org.springframework.context.weaving.DefaultContextLoadTimeWeaver:72 - Found Spring's JVM agent for instrumentation
2009-09-02 14:35:49,562 INFO   NONE org.springframework.beans.factory.support.DefaultListableBeanFactory:414 - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@ed889d: defining beans [...
2009-09-02 14:37:31,031 INFO   NONE org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean:221 - Building JPA container EntityManagerFactory for persistence unit ...

我尝试了所有我能想到的方法来解决它:

  • 清理tomcat工作目录
  • 重启eclipse
  • 重启Windows
  • 刷新/清理所有项目

上周我在使用Eclipse Ganymede时首次遇到这个问题。之前几个月一直在调试模式下运行良好,我没有做出任何会导致此问题的重大更改。最终,我升级到Eclipse Galileo,解决了我的问题。现在两天后,我在Galileo中也遇到了同样的问题。就像我说的,在非调试模式下它可以正常工作。感激不尽任何帮助。

我应该补充说明,在调试模式下其他功能是可用的 - 比如JUnit测试,所以这是与Tomcat有关的特定问题。


你尝试过清理你的工作区吗?有时候我也会遇到这种情况,然后我就会清理一下我的工作区。一旦工作区被清理干净了,它就能正常工作了。 - Arun P Johny
顺便提一下,这同样适用于Intellij IDEA。我刚试了一下IntelliJ 10,我的程序从Tomcat 5.5.31的启动时间7分钟缩短为20秒。 - Shaun
5个回答

143

我解决了这个问题!一旦我弄清楚了,我记得以前也发生过这种情况。 我清除了所有断点,现在它正常工作了。我不知道为什么这会引起这种结果,但是现在它可以工作了。


5
非常感谢!我们应该认真将此列为“Eclipse bug”(或适当的bug类型),以便不再拖慢更多开发人员的工作! - blong
1
刚在Eclipse Helios中遇到了同样的问题...删除断点解决了这个问题,谢谢!!! - hugri
2
谢谢!你为我和我的公司节省了大量的时间和金钱。 - kolobok
2
我也一样。非常感谢!当 JPA Hibernate EntityFactory 被加载时,我的创业公司变慢了。在那之前,一切都很好和快。版本:Kepler Service Release 2,构建 ID:20140224-0627。 - feder
1
MVP,谢谢!我不记得Netbeans发生过这种情况,其他IDE是否普遍存在这个问题? - Alberici
显示剩余6条评论

21

我刚刚遇到了这个问题,这个解决方案对我很有帮助。不过,与其他帖子的20多个断点不同,我只有1个断点。然而,我的一个断点是方法断点而不是行断点-我想知道tomcat启动时众多方法调用与方法断点结合在一起是否会引起这个问题...

我刚刚做了一个小实验:

  1. 设置一个行断点并启动调试模式- 5秒启动(正常)
  2. 设置一个方法断点并启动调试模式 - ..... 不愿意等待(> 90秒)。

我猜这就是问题所在。


4
是的,方法断点和监视点(在字段上的断点)比行断点慢得多。除非您不确定源与正在调试的类相匹配,否则请尽可能使用行断点。例如,将断点放在方法内的第一条语句上,而不是在方法签名本身上。请参见https://dev59.com/f3RB5IYBdhLWcg3wAjNH#787753以了解为什么方法断点速度较慢。 - John McCarthy
感谢 @nodescript1,我知道为什么我的 Eclipse 运行缓慢并已经解决了。 - Mr Lou

3

3
我在Eclipse Galileo中遇到了相同的问题,快速运行但调试缓慢。感谢以上帖子,我清除了所有断点并重新启动了Tomcat。这神奇地解决了问题。值得一提的是,我之前设置了2个方法断点和其他行断点。 我进行了测试,以确认上述有关方法断点减速的理论。以下是我的发现。看起来不是方法断点的问题,而是在调试视图中仍然显示的方法断点,但在代码中不存在的方法断点。我的意思是我更改了该方法的参数,但旧参数的旧断点仍存在于断点列表中。那就是罪魁祸首,当我删除它时,其他方法断点就不会减慢服务器速度。 因此,似乎Eclipse正在尝试搜索某些不存在的内容,这似乎使其变慢了。 希望这可以帮助您。

0

将默认日志级别更改为:

<root>
  <level value="DEBUG" />
  <appender-ref ref="ConsoleAppender" />
</root>

至:

<root>
  <level value="OFF" />
  <appender-ref ref="ConsoleAppender" />
</root>

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