使用 Eclipse IDE 在调试模式下加速 Tomcat

Posted

技术标签:

【中文标题】使用 Eclipse IDE 在调试模式下加速 Tomcat【英文标题】:Speeding up Tomcat in debug mode with Eclipse IDE 【发布时间】:2010-11-25 01:33:12 【问题描述】:

通过 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 解决了我的问题。现在两天后,我在伽利略中遇到了同样的问题。就像我说的它在非调试模式下工作正常。非常感谢任何帮助。

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

【问题讨论】:

您是否尝试清理您的工作区。有时它会发生在我身上,然后我会清理我的工作空间。清理工作区后,它就可以正常工作了 仅供参考 - 这同样适用于 Intellij IDEA。刚刚用 IntelliJ 10 试过这个,我的应用程序从 7 分钟的 tomcat 5.5.31 启动时间到 20 秒...... 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

现在 STS 就像一个魅力!

【讨论】:

【参考方案3】:

从以下位置更改默认日志记录级别:

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

收件人:

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

【讨论】:

【参考方案4】:

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

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

我猜这就是问题所在。

【讨论】:

是的,方法断点和观察点(字段上的断点)比行断点慢得多。尽可能使用行断点,除非您不确定您的源代码是否与您正在调试的类匹配。例如,在方法内的第一条语句上放置断点,而不是在方法签名本身上。请参阅***.com/a/787753/277307 了解方法断点为何较慢的原因。 谢谢@nodescript1 我知道我的日食变慢的原因并修复它。【参考方案5】:

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

【讨论】:

非常感谢!!!我们应该认真地把它列为“Eclipse bug”(或任何可能合适的),这样它就不会减慢任何速度更多开发人员倒下! 刚刚在 Eclipse Helios 中遇到了同样的问题...删除断点解决了这个问题,谢谢!!! 谢谢!您为我和我的公司节省了大量时间和金钱。 这里也一样。非常感谢!加载 JPA Hibernate EntityFactory 后,我的启动速度变慢。在那之前。一切都好又快。版本:Kepler Service Release 2 Build id:20140224-0627 MVP,谢谢!我不记得发生在 Netbeans 上,这个问题在其他 IDE 中是否常见?

以上是关于使用 Eclipse IDE 在调试模式下加速 Tomcat的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu下使用Eclipse IDE for C/C++ Developers交叉编译和调试

Eclipse调试多线程代码

Eclipse IDE配置PHP开发调试环境

为啥在调试模式下启动 GWT 时,我的断点不会中断

如何在 Eclipse 和调试模式下使用 proguard?

如何在没有 gdbserver 的情况下使用 Eclipse CDT 进行远程调试?