Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
7-13485
Money
2003-04-03 22:37
2003.06.05
Помогите получить информацию с пульта ду.


14-13367
@Ujin
2003-05-16 18:29
2003.06.05
Где бы так добыть DBGrid с переносом строк по словам в ячейке?


8-13336
Manulo
2003-02-18 13:51
2003.06.05
WAV -> MP3 from microphone


3-13041
alleb
2003-05-16 17:44
2003.06.05
ADO и ClientDataSet


3-12995
cherox
2003-05-15 13:49
2003.06.05
Как выделить кусок записей в RxDbGrid?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский