由于Delphi IDE,CPU过热

4
我正在使用Delphi 7,但我试用了Delphi 2005-2010版本。在所有这些新版本中,当Delphi IDE显示在屏幕上时,我的CPU利用率为50%(一个核心为100%,另一个核心则处于“放松”状态)。当IDE被最小化时,这种情况不会发生。我的电脑因此过热。
有什么提示为什么会发生这种情况吗?看起来如果我想升级到Delphi 2010,我需要先升级我的冷却系统。而且我有点懒得去做这件事,特别是我想要解决我的电脑问题并购买一台新电脑(在未来的6个月内) - 可能我还需要购买一个Win 7许可证。
更新: Delphi XE 和 XE7也受到这个bug的困扰。
以下是解决方案!

3
我想提醒您,如果您的电脑不能承受100%的负载而不过热,那么它并不是非常可靠,而您的电脑只有50%的负载!导致这种情况的常见问题是散热膏不好、不足或过多以及系统内的灰尘。我建议您尝试使用压缩空气来清除灰尘,如果仍然太热,则更换散热膏,我推荐使用OCZ Freeze品牌的散热膏。请问温度达到了多少,处理器是什么型号? - Jonathan Czitkovics
4
无论“overheats”指的是冒烟、起火还是“听上去像喷气式飞机起飞”,问题不在于散热、宠物毛发等方面。Delphi IDE不应在长时间内使用100%的CPU。因此,让我们帮助这个人找出问题所在。 - Chris Thornton
3
要查找CPU型号,请按Win+Pause键。 - Andreas Rejbrand
@Chris Thornton 我只是在给他建议,以免他的电脑出现故障。但如果你想一想,如果像我在你的问题评论中所说,他的处理器是 Pentium 4 1.4GHZ,那么这就可以解释为什么 CPU 利用率需要这么长时间才能回到空闲状态了。 - Jonathan Czitkovics
1
OP的结论在很多层面上都令人感到恐惧... - Blindy
显示剩余7条评论
4个回答

10

解决方案

100% 的 CPU 使用率问题是由 Delphi 工具栏中的一个按钮引起的!
我喜欢在新的全屏模式和旧的 Delphi-7 般的 IDE 之间进行切换。有一个名为“停靠编辑窗口”的按钮可以实现此功能。每次安装新版本的 Delphi 后,我都会配置 IDE 的外观并将该按钮放在工具栏上。但当我移除按钮后,一切都正常了。

结论是,不要将此按钮放在 IDE 工具栏上。


更新 2010
当我在 IDE 中打开 DPR 文件时,我发现了类似的问题。 但目前还没有解决方法。

更新 2011
另一个类似的 Delphi 错误(@Warren P 提供了解决方案) Delphi XE takes one full core (100% CPU utilization)

更新 2015
我已找到导致上述问题的按钮(在编辑 DPR 文件时出现 100% 的 CPU 使用率)- 它就是“使用单元”按钮。


1
我想确认一下,我也曾经在 Delphi 2007 中遇到过这个问题,但是当我从工具栏中移除了按钮后,问题就解决了。 - Jerry Gagnon

3

这是 Delphi Action 的工作方式。一些“按钮”使用 Action 监视某些东西,如果 Action 在空闲事件上执行一些代码,这将导致 CPU 使用率增加,就像你在无限循环中执行代码一样。除了像你说的那样不使用该按钮外,没有太多可以做的。


2
我猜第一步是尝试确定Delphi的哪个部分占用了100%的资源。是主线程还是辅助线程?如果您能确定哪个线程占用了所有CPU资源,我猜您可以调试IDE(从第二个Delphi实例附加到进程中,可以是D7,这样您就不会有两个应用程序同时使用CPU),然后跟踪“有问题”的线程。幸运的话,正在执行的代码可能会有一些调试信息,指示正在执行什么操作。
如果您安装了任何第三方/家庭组件,请尝试删除它们。
像已经提到的那样,请尝试禁用代码洞察。
尝试禁用正在运行的任何反病毒软件。(可能是某种活锁)
这就是我现在能想到的所有内容...

嗯...我想这个评论应该是针对Hola的答案的 ^_^ - Ken Bourassa

1

这是有关编程的内容,可能是代码提示或其他集成开发环境功能,在后台编译。D2005经常会进入“僵尸”模式,持续半分钟左右并影响我的一个核心。不过在D2010中好多了。建议关闭IDE小工具(代码补全、代码参数、工具提示、错误提示等),看看是否能缓解问题。如果可以,那么逐个重新开启这些小工具,找出问题所在。


我认为在得出结论之前,弄清楚他的处理器是很重要的。如果他有一颗1.4GHZ的Pentium 4处理器,那可能可以解释这个问题。 - Jonathan Czitkovics
...或者是主频为 600 MHz 的赛扬处理器。 - Andreas Rejbrand
@Andreas Rejbrand 他说了“cores”,这意味着他可能将逻辑核心(如 Pentium 4 中的超线程)与双核心混淆了,或者他实际上拥有双核心。因此它不可能是赛扬处理器。 - Jonathan Czitkovics
1
@Jonathan:我没有看到那个……抱歉! - Andreas Rejbrand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接