在“调试”模式下运行程序非常慢


71

由于最近,在Eclipse Galileo中以“调试”模式运行程序要慢得多。

我不知道有什么变化。

您知道可能是什么原因吗?正常运行它不是问题。


1
可以启用某种性能分析吗?
2011年

我只是从Galileo切换到Helios,但没有任何改善。

如何启用/禁用性能分析?

调试常规程序或插件/ rcp?
kem 2011年

常规程序(使用Spring和Maven)。

Answers:


195

另一个“调试中断”是方法进入/退出断点的使用。

您是否尝试删除所有一次断点定义?

有时,我认为Eclipse与某些内部/显示状态不同步。也许您应该尝试设置新的工作空间(而非副本)。有时这可以帮助我从虚假功能中恢复过来。

这是您可以删除所有断点的方法

Eclipse->运行->删除所有断点-用于始终删除所有断点

Eclipse->运行->跳过所有断点-用于临时删除断点


我创建了一个新的工作区,并在那里重新签出。现在,调试按例外进行。您知道我该如何修复旧的工作空间吗?

7
我只能建议放弃它,除非您想了解工作区.metadata目录中大约1.000.000个文件的含义。我不知道该如何恢复...童话故事里曾在命令行中添加过一次“ -clean”,但这并没有帮助...
mtraut 2011年

9
用“ -clean”启动Eclipse对我来说已经修复了。:-)

8
谢谢,删除了我已经忘记的方法入口断点,解决了我的性能问题!
ChristophK

11
谢谢。对我来说,它删除了所有有帮助的断点和表达式。奇怪的是,这些断点过去并没有引起问题-突然,从一个应用程序启动到下一个应用程序启动,它们确实会造成问题。这似乎是日食的内部问题。
Simon Voggeneder 2015年

29

我经常面对这个问题。解决方法很简单,删除所有断点。(运行>>删除所有断点)


14

我只是在Eclipse调试模式下运行一个程序,该程序几乎不需要调试即可立即执行,但是当我在调试模式下运行它时,速度确实很慢。我仔细检查了一下,删除了我不使用的大量随机无用断点,然后程序加快了很多速度(大约200倍)。


这对我很有帮助-我在同一个工作区中有其他项目的断点,我删除了所有这些断点,并且加快了当前程序的调试速度
JavaTec

10

禁用“步骤操作后显示方法结果”。

分步操作后显示方法结果


就是这样 对于IntelliJ IDEA用户,请执行此操作。
LppEdd

Intellij中确切的等效语音是什么?
Antimo

实际上为什么使用“在一步操作后显示方法结果”?
编码世界

5

我发现我经常忘记,我在表达式面板中添加了一堆不再需要的表达式,但这些表达式仍在被评估(或无法评估),这会使很多事情变慢。确保在不需要时清除这些表达式。


5

关闭eclipse ...清除%temp%文件夹,temp文件夹...禁用断点...在大多数情况下,这肯定可以解决问题。


这对我有用,非常感谢!,顺便说一句,您不需要关闭日食。
IdontCareAboutReputationPoints

4

您要附加哪种JVM?根据我的经验,我发现在调试方式下,IBM JDK运行起来很慢。对于所有JVM,请检查条件断点是否具有昂贵的条件。尝试禁用断点。您可能有异常断点或表达式。尝试禁用或删除它们。


1

在Windows上清除临时文件为我修复了它

"C:\\Documents and Settings\\{user}\\Local Settings\\Temp"

1

就我而言,Eclipse尝试构建文件,而这是我手动完成的。转到“窗口”->“首选项”->“运行/调试”->“启动”,然后禁用“常规选项”下方的“启动之前先构建(如果需要)”,可以解决此问题。


0

通常,在调试模式下运行时,Java虚拟机会关闭即时编译器(JIT)。在IBM WebSphere上,IBM JDK进行了严重的去优化,并且速度非常慢。顺便说一下,调试也使不可能重新编译和优化代码。

继续进行日志记录以进行复杂的调试:它将节省您的生产时间,而您肯定无法进行调试。


1
通常,Java虚拟机在调试模式下运行时会关闭即时编译器(JIT),这完全是不正确的。设置断点后,通常会对方法进行优化,然后由解释程序对方法进行优化和执行。
bestsss 2013年

确实,较早的IBM JVM(1.4-)非常慢。无论如何,去优化方法,重建堆栈跟踪等都是SLOW操作,不是吗?
daitangio

仅在调试模式下的断点才需要取消优化-无需单独获取stacktrace。当然,去优化是一个非常缓慢的过程。除非必要,否则不应生成Stacktraces(即遍历堆栈),即,如果异常不打印其stacktrace或未调用getStackTrace。AFAIK Sun和IBM的JVM 1.4均以正常速度在调试模式下运行(请确保有关Sun的信息)
13年

0

经过多年的日食学习,以下是一些建议

  1. 使您的开放项目最小化您的实际需求
  2. 保持精简和轻巧-卸载不使用的插件/功能(Mylnn,验证等)。
  3. 无论您做什么,日食都会随着时间的推移逐渐变慢。获得响应式IDE的最终解决方案是回收现有工作区(创建新工作区并引入所需的项目)。

0

在以调试模式运行应用程序之前,请按纽扣(禁用所有断点),这样就不会遇到加载缓慢或出现任何问题的情况。应用程序启动后,只需启用断点,然后即可调试代码。


0

升级macOS版本后,我最近遇到了这个问题。我无法使用上述所有解决方案来修复缓慢的调试器,最终安装了新版本的eclipse,之后一切正常。


0

这一次发生在我身上,问题是,我在“源代码查找”中拥有包含所有项目源代码的文件夹。这样,不仅调试器变得非常慢(因为它可能抓取了我的所有文件),而且我无法做很多事情,例如内联执行。

外卖: 检查您的Source Lookup。调试时,在“调试”视图中右键单击任何线程,选择“编辑源查找”,然后查看可以/应该从中删除什么。就我而言,这是一个伪造的文件夹,有时您可能有太多项目,文件夹,JAR等,并且可能删除了一些。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.