使用Eclipse IDE以debugging模式加速Tomcat

通过eclipse运行Tomcat可以在非debugging模式下正常工作,但不能在debugging模式下运行。 当我尝试在debugging模式下启动Tomcat服务器时,控制台输出看起来好一段时间,但是然后开始减慢,最终停止,以100%挂起CPU。 我不认为这是相关的,但以防万一 – 这是控制台输出正确的时候开始放缓,并最终停止(通过停止我的意思是没有更多的控制台输出,但仍然是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遇到了这个问题。 在这个问题之前的几个月,我一直在debugging模式下运行良好。 我没有做任何重大的改变,我们的项目会导致这一点。 最后,我升级到日食伽利略解决了我的问题。 现在两天后,我在伽利略遇到同样的问题。 就像我说的,它在非debugging模式下工作正常。 任何帮助深表感谢。

我应该添加其他东西在debugging模式下工作 – 例如junittesting,所以这是tomcat特有的。

我已经解决了这个问题! 一旦我明白了,我记得这是以前发生过的。 我清除了所有的断点,它工作正常。 我不知道为什么会导致这样的结果,但它的工作原理。

我自己就遇到了这个问题,这个解决scheme帮了我。 但是 – 我只有1个断点,而不是其他20多个海报。 但是,我的一个断点是一个方法断点,而不是一个断点 – 我不知道是否tomcat启动方法调用与方法断点结合可能会导致这个问题…我只是尝试了一个小实验:

  1. 设置线路断点并启动debugging模式 – 5秒启动(正常)
  2. 设置方法断点并启动debugging模式 – …..不愿意等待(> 90秒)。

我猜这是个问题。

我在伽利略也有同样的问题。 快速运行,但爬行debugging。 由于上面的post,我清除了所有的断点,并重新启动Tomcat。 这神奇地解决了这个问题。 fyi – 之前我有2个方法断点和其他的断点。 我做了testing,以确认上述关于方法断点放缓的理论。 这是我发现的。 看起来不是问题的方法断点,问题是方法断点仍然显示在debugging视图中的断点列表中,但在代码中不存在。 我的意思是我改变了该方法的参数,但旧的断点旧断点仍然存在于断点列表中。 这是罪魁祸首,当我删除,其他方法断点没有减慢服务器。 所以看起来像日食是试图寻找一些不存在的东西,似乎已经放慢了速度。 希望这可以帮助。

我也偶然发现这个问题。

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

现在STS就像一个魅力!

更改默认日志logging级别:

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

至 :

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