2

我的 Delphi 开始使 CPU 过热。一旦我启动Delphi,它就会自己拥有一个完整的核心,并且冷却器开始非常努力地工作。有什么技巧可以解决这个问题吗?

我知道如果我同时使用“Delphi”和“bug”这两个词,Stack Overflow 上的一些人会开始释放热气,但这是一个非常讨厌的错误,因为它会浪费大量能量(尤其是在使用电池时)和过热会使电脑过早老化。


更新:

仅当活动选项卡是项目 (dproj) 文件时才会出现问题。一旦我切换到另一个文件 (pas),CPU 就会回到 0%-1%。它发生在任何 dproj 文件中,但仅当 IDE 在屏幕上可见时才会发生(未最小化到任务栏)。所以这显然是一个渲染错误。


更新:

看起来 Warren P 找到了产生类似错误的方法。看他的回答。


更新:

我已经看到这个问题也出现在一个非常大的 PAS 单元上,但是在我让 Delphi IDE 窗口在后台(未使用)3-5 分钟后出现了最大 CPU 利用率。我可以通过将窗口最小化到任务栏或切换到另一个 IDE 选项卡来解决它。

4

3 回答 3

7

尝试删除您可能添加的任何 Delphi IDE 插件。尝试查看它是否仅发生在特定项目或源文件上。使用调试器闯入 Delphi 进程并查看调用堆栈是什么。这样,您可能会看到 Delphi 的哪个部分正在旋转 CPU。

于 2011-05-31T09:23:45.637 回答
4

我找到了一种重现问题的方法,非常类似于您的问题。创建一个新的delphi项目并向.DPR(主项目源)添加一个ifdef条件,其中包含一些不会解析的代码......

program IdeTestProject1;
{$ifdef FOO}
bar
{$endif}

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2},
  Unit3 in 'Unit3.pas' {Form3},
  Unit4 in 'Unit4.pas' {Form4},
  Unit5 in 'Unit5.pas' {Form5},
  Unit6 in 'Unit6.pas' {Form6};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm3, Form3);
  Application.CreateForm(TForm4, Form4);
  Application.CreateForm(TForm5, Form5);
  Application.CreateForm(TForm6, Form6);
  Application.Run;
end.

因此我的建议是你找到所有条件编译指令和其他复杂的语法,包括直接在 DPR 中的任何函数或代码,并将其移动到另一个单元。代码完成、错误洞察或其他一些功能正在无情地重新解析这个单元,这会导致性能错误。

于 2011-06-01T17:56:46.640 回答
1

我使用“进程监视器”实用程序并检查了 bds.exe 操作。我发现处理了更多的 .dcu。(打开文件,读取文件,关闭文件)。要修复,我已删除所有 .dcu

于 2011-12-20T14:12:17.667 回答