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