Delphi XE занимает одно полное ядро ​​(загрузка процессора 100%)

Мой Delphi начал перегревать процессор. Как только я запустил Delphi, он сам возьмется за полное ядро, и кулеры начнут работать очень напряженно. Есть какой-нибудь трюк, чтобы это исправить?

Я знаю, что некоторые люди здесь, в Stack Overflow, начнут выпускать горячий пар, если я использую слова "Delphi" и "ошибка" вместе, но это действительно неприятная ошибка, поскольку она будет тратить много энергии (особенно при работе от батареи) и сделает компьютер стареть преждевременно из-за перегрева.


Обновить:

Проблема появляется, только если активная вкладка представляет собой файл проекта (dproj). Как только я переключаюсь на другой файл (pas), процессор возвращается к 0%-1%. Это происходит с ЛЮБЫМ файлом dproj, но это происходит ТОЛЬКО, если IDE видна на экране (не свернута на панель задач). Так что это явно ошибка рендеринга.


Обновить:

Похоже, Уоррен П нашел способ создать похожую ошибку. Смотрите его ответ.


Обновить:

Я также видел проблему, возникающую при ОЧЕНЬ большом устройстве PAS, но максимальная загрузка ЦП появляется после того, как я оставляю окно Delphi IDE в фоновом режиме (не используется) в течение 3-5 минут. Я могу решить эту проблему, свернув окно до панели задач или переключившись на другую вкладку IDE.

3 ответа

Решение

Я нашел способ воспроизвести проблему, очень похожую на вашу проблему. Создайте новый проект 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, и переместить его в другой модуль. Завершение кода, понимание ошибок или какая-либо другая функция постоянно переобрабатывают этот модуль, и это приводит к ошибке производительности.

Попробуйте удалить все плагины для Delphi IDE, которые вы могли добавить. Попробуйте посмотреть, происходит ли это только в определенных проектах или исходных файлах. Используйте отладчик, чтобы проникнуть в процесс Delphi и посмотреть, что такое стек вызовов. Таким образом, вы можете увидеть, какая часть Delphi вращает процессор.

Я с утилитой "Монитор процесса" и проверил операции bds.exe. Я обнаружил, что больше.dcu обрабатываются. (Открыть файл, прочитать файл, закрыть файл). Чтобы исправить я удалил все.dcu

Другие вопросы по тегам