我的Delphi开始使CPU过热。一旦我开始使用Delphi,它就会为自己带来一个完整的核心,冷却器开始真正起作用。有什么办法可以解决这个问题吗?
我知道如果我一起使用“Delphi”和“bug”这两个词,Stack Overflow上的一些人会开始释放热量,但这是一个非常讨厌的bug,因为它会浪费很多精力(特别是在开启时)由于过热会使计算机过早老化。
更新
仅当活动选项卡是项目(dproj)文件时,才会出现此问题。一旦切换到另一个文件(pas),CPU就会回到0%-1%。它发生在任何dproj文件中,但仅当IDE在屏幕上可见时才会发生(非最小化到任务栏)。所以这显然是一个渲染错误。
更新
看起来Warren P找到了一种产生类似错误的方法。看他的答案。
更新
我已经看到这个问题也出现在一个非常大的PAS单元但是在我让Delphi IDE窗口在后台(未使用)3-5分钟后出现最大CPU利用率。我可以通过最小化窗口到任务栏或切换到另一个IDE选项卡来解决它。
答案 0 :(得分:7)
尝试删除您可能添加的Delphi IDE的所有插件。尝试查看它是否仅发生在特定项目或源文件上。使用调试器进入Delphi进程并查看调用堆栈是什么。这样你就可以看到Delphi的哪个部分正在旋转CPU。
答案 1 :(得分: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中的任何函数或代码并将其移动到另一个单元。代码完成,错误洞察或其他一些功能无情地重新解析此单元,这导致性能错误。
答案 2 :(得分:1)
我有“进程监视器”实用程序并检查了bds.exe操作。我发现更多的.dcu被处理了。 (打开文件,读取文件,关闭文件)。 要修复我已删除所有.dcu