45

通过 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工作目录
  • 重新启动日食
  • 重新启动 Windows
  • 刷新/清理所有项目

上周我第一次遇到这个问题是使用 eclipse ganymede。在此问题出现之前的几个月,我一直在调试模式下运行良好。我没有对我们的项目进行任何会导致这种情况的重大更改。最终,我升级到 eclipse galileo 解决了我的问题。现在两天后,我在伽利略中遇到了同样的问题。就像我说的它在非调试模式下工作正常。任何帮助深表感谢。

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

4

5 回答 5

142

我已经解决了这个问题!一旦我想通了,我记得以前发生过这种情况。我清除了所有断点,它工作正常。我不知道为什么这会导致结果,但它确实有效。

于 2009-09-03T13:56:35.650 回答
21

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

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

我猜这就是问题所在。

于 2009-12-03T03:53:14.223 回答
3

我在 Eclipse Galileo 中遇到了同样的问题。快速运行但爬行调试。感谢上面的帖子,我清除了所有断点并重新启动了 Tomcat。这神奇地解决了这个问题。仅供参考 - 我之前有 2 个方法断点和其他行断点。我进行了测试以确认上述关于方法断点变慢的理论。这是我发现的。看起来问题不是方法断点,问题是方法断点仍在调试视图的断点列表中显示,但在代码中不存在。我的意思是我更改了该方法的参数,但带有旧参数的旧断点仍然存在于断点列表中. 那是罪魁祸首,当我删除它时,其他方法断点并没有减慢服务器的速度。所以看起来 Eclipse 试图搜索一些不存在的东西,这似乎减慢了它的速度。希望这可以帮助。

于 2010-07-02T15:15:46.547 回答
3

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

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

现在 STS 就像一个魅力!

于 2013-05-29T12:24:56.020 回答
0

更改默认日志记录级别:

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

到 :

<root>
  <level value="OFF" />
  <appender-ref ref="ConsoleAppender" />
</root>
于 2010-03-07T04:40:52.407 回答