Форум: "Основная";
Текущий архив: 2003.06.05;
Скачать: [xml.tar.bz2];
ВнизDelphi таймер некорректен? (D6, win2000) Найти похожие ветки
← →
Sandman25 (2003-05-22 18:44) [0]Сделал простейший проект с таймером на форме.
Вот обработчик.
var
i: byte;
begin
Timer1.Enabled := false;
try
for i:=1 to 100 do
Caption := IntToStr(random(100));
finally
Timer1.Enabled := True;
end;
end;
За полторы минуты работы память, используемая процессом (показанная диспетчером задач), выросла с 1620kb до 1636kb. Еще через 5 минут размер вырос до 1648kb.
Почему? Дело в random? В IntToStr и выделяемой под строку памяти?
← →
Sandman25 (2003-05-22 18:48) [1]Заменил тело for - вместо присвоения Caption написал
for i :=1 to 100 do
Tag := i;
Все равно та же дурка - память растет...
← →
VMcL (2003-05-22 18:48) [2]>Sandman25 © (22.05.03 18:44)
Забей на то, что пишет Task Manager. IMHO, это нормально.
← →
DVM (2003-05-22 18:49) [3]Могу только предположить, что это память, выделяемая динамически под под string.
← →
DVM (2003-05-22 18:50) [4]
> IMHO, это нормально.
Если память с течением времени продолжает расходоваться - это ненормально. Через год работы проги - она кончится. Год много - вовсе нет для сервера.
← →
VMcL (2003-05-22 18:53) [5]>DVM © (22.05.03 18:50)
>>Если память с течением времени продолжает расходоваться - это ненормально.
Согласен. Но, думаю, в этом случае это не так (напр., память расходуется и освобождается равномерно). Надо проверять.
← →
Sandman25 (2003-05-22 18:59) [6]Что проверять? :(
Я же использую стандартный таймер. Неужели писать свой таймер?
← →
panov (2003-05-22 19:25) [7]>Sandman25 © (22.05.03 18:59)
Не беспокойся в этом случае.
Это свойство менеджера памяти в Windows.
Память освободится.
← →
Юрий Зотов (2003-05-22 19:50) [8]Думаю, это все же не баг, а фича Memory Manager (что-то типа - он не спешит сразу возвращать системе мелкие куски памяти, держит их за собой и ждет, пока накопится достаточно большой кусок, чтобы сократить количество перезапросов). Поэтому, если уж писать, то не свой таймер, а свой MM. Да и Task Manager мало подходит для таких измерений. Вот пример (только что сделал):
1. Вызываем Task Manager и видим, что Delphi жрет 27040 Кб.
2. Сворачиваем Delphi - 1864 Кб.
3. Снова разворачиваем - 5324 Кб.
Выводы напрашиваются...
Для отлова утечек памяти есть специализированные инструменты, ими и надо пользоваться.
← →
Sandman25 (2003-05-23 10:11) [9]Спасибо.
Попробую найти эти инструменты.
← →
Shc (2003-05-23 21:04) [10]Попробуй описать i глобальной переменой.
← →
Shc (2003-05-23 21:05) [11]Попробуй описать i глобальной переменой, и посмотреть на результат в этом случае.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c