Delphi XE занимает одно полное ядро ​​(загрузка процессора 100%) - PullRequest
2 голосов
/ 31 мая 2011

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

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


Обновление:

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


Обновление:

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


Обновление:

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

Ответы [ 3 ]

7 голосов
/ 31 мая 2011

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

4 голосов
/ 01 июня 2011

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

1 голос
/ 20 декабря 2011

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

...