如何解决Delphi XE采用一个完整内核100%CPU使用率
| 我的Delphi开始使CPU过热。一旦我开始使用Delphi,就需要一个完整的内核,并且散热器确实开始工作。有什么技巧可以解决此问题? 我知道如果我同时使用单词“ Delphi”和“ bug”,Stack Overflow上的某些人将开始释放热气,但这是一个非常讨厌的错误,因为它会浪费很多精力(尤其是当电池电量),并且由于过热会导致计算机过早老化。 更新: 仅当活动选项卡是项目(dproj)文件时,才会出现此问题。一旦我切换到另一个文件(pas),CPU就会回到0%-1%。任何dproj文件都会发生这种情况,但是只有在屏幕上显示IDE时才会发生(未最小化到任务栏)。因此,这显然是一个渲染错误。 更新: 看起来沃伦P已找到一种产生类似错误的方法。看到他的答案。 更新: 我已经看到非常大型的PAS单元也会出现该问题,但是在让Delphi IDE窗口在后台(未使用)3-5分钟后,出现了最大CPU使用率。我可以通过最小化任务栏窗口或切换到另一个IDE选项卡来解决此问题。解决方法
我找到了一种非常类似于您的问题的重现问题的方法。创建一个新的delphi项目,并将.def条件添加到.DPR(主项目源)中,该条件包含诸如此类的无法解析的代码...
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中的所有函数或代码,然后将其移至另一个单元。代码完成,错误洞察或某些其他功能会不断地重新解析此单元,这会导致性能错误。
, 尝试删除可能已添加的Delphi IDE的所有插件。尝试查看它是否仅在特定项目或源文件上发生。使用调试器进入Delphi进程,查看调用堆栈是什么。这样,您可能会看到Delphi的哪一部分正在旋转CPU。
, 我具有“进程监视器”实用程序,并检查了bds.exe操作。我发现有更多的.dcu被处理。 (打开文件,读取文件,关闭文件)。
要修复,我已经删除了所有.dcu
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。