通过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 ...
我尝试了一切我能想到的解决方法:
上周我首次使用eclipse ganymede解决了这个问题。在本期之前的几个月里,我一直在调试模式下运行良好。我没有对我们的项目做出任何重大改变。最后,我升级到eclipse galileo,解决了我的问题。现在2天后,我在伽利略遇到了同样的问题。就像我说它在非调试模式下工作正常。非常感谢任何帮助。
我应该补充一点,其他的东西在调试模式下工作 - 例如junit测试,所以它是特定于tomcat的东西。
答案 0 :(得分:136)
我已经解决了这个问题!一旦我弄清楚了,我记得以前发生了这件事。我清除了所有断点,它运行正常。我不知道为什么会导致结果,但它确实有效。
答案 1 :(得分:20)
我自己遇到了这个问题,这个解决方案帮助了我。然而 - 我只有1个断点,而不是20多个其他海报。然而,我的一个断点是一个方法断点而不是一个行断点 - 我想知道tomcat启动时的多个方法调用是否与方法断点相结合可能会导致这个问题...... 我刚试了一个小实验:
我猜这是问题所在。
答案 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>