使用Eclipse IDE以调试模式加速Tomcat

时间:2009-09-02 18:51:13

标签: java eclipse tomcat debug-mode

通过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 ...

我尝试了一切我能想到的解决方法:

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

上周我首次使用eclipse ganymede解决了这个问题。在本期之前的几个月里,我一直在调试模式下运行良好。我没有对我们的项目做出任何重大改变。最后,我升级到eclipse galileo,解决了我的问题。现在2天后,我在伽利略遇到了同样的问题。就像我说它在非调试模式下工作正常。非常感谢任何帮助。

我应该补充一点,其他的东西在调试模式下工作 - 例如junit测试,所以它是特定于tomcat的东西。

5 个答案:

答案 0 :(得分:136)

我已经解决了这个问题!一旦我弄清楚了,我记得以前发生了这件事。我清除了所有断点,它运行正常。我不知道为什么会导致结果,但它确实有效。

答案 1 :(得分:20)

我自己遇到了这个问题,这个解决方案帮助了我。然而 - 我只有1个断点,而不是20多个其他海报。然而,我的一个断点是一个方法断点而不是一个行断点 - 我想知道tomcat启动时的多个方法调用是否与方法断点相结合可能会导致这个问题...... 我刚试了一个小实验:

  1. 设置换行符和 启动调试模式 - 5秒 启动(正常)
  2. 设置方法断点并启动调试模式 - .....不愿意等待(> 90 秒)。
  3. 我猜这是问题所在。

答案 2 :(得分:3)

我在伽利略遇到了同样的问题。快速运行但爬行调试。感谢上面的帖子,我清除了所有断点并重新启动了Tomcat。这神奇地解决了这个问题。 fyi - 我之前有2个方法断点和其他线断点。 我做了测试以确认关于方法断点减慢的上述理论。这是我发现的。看起来问题不是方法断点,问题是方法断点仍然出现在调试视图的断点列表中,但在代码中不存在。我的意思是我更改了该方法的参数,但旧断点与旧参数仍然存在于断点列表中。这是罪魁祸首,当我删除它时,其他方法断点并没有减慢服务器的速度。 所以看起来eclipse试图寻找不存在的东西,似乎已经放慢了速度。 希望这会有所帮助。

答案 3 :(得分:3)

我也偶然发现了这个问题。

我关闭了所有不相关的项目。 清除了我的断点。 增加STS VM内存。关注此博客:http://searchforsolutions.wordpress.com/2011/12/01/eclipse-jvm-settings-for-optimized-performance/ 禁用JBoss工具验证器和所有其他验证器。

现在STS就像一个魅力!

答案 4 :(得分:1)

更改默认日志记录级别:

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

致:

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