Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запись в файл и расход памяти [D7, XP]


Darvin ©   (2009-04-14 16:41:00) 

Здравствуйте!
Делаю логирование некоторых событий в файлы. Запись делается примерно 20 - 50 раз в секунду. Файлы ограничены по длине, при достижении заданной длины, меняется FFileName, пишем в другой файл. Записываю следующим образом:


var
 HFile : File;
 FBuffer : array of Byte;

begin
 ...
 AssignFile ( HFile, FFileName );
 if FileExists ( FFileName ) then
 begin
   Reset ( HFile, 1 );
   Seek ( HFile, FileSize(HFile) );
 end
 else
   Rewrite ( HFile, 1 );
 if Length(FBuffer) > 0 then
   BlockWrite ( HFile, FBuffer[0], FDataPnt );
 CloseFile ( HFile );


При этом увеличивается расход памяти приложением в момент смены имени файла, начала записи в другой файл. Если писать в один файл, то память не расходуется.
Полагаю, что расход памяти связан с тем, что я не "отдаю" системе дескриптор файла. Как можно решить эту проблему?


Darvin   (2009-04-21 15:48:00) [1]

спасибо


DVM   (2009-04-21 15:25:00) [2]


> Darvin   (21.04.09 15:21) [9]


> Смотрю диспетчером задач.

Это не лучший вариант. К тому же там надо смотреть столбец виртуальная память. Там несколько странные показания, утечку на них не поймаешь.

Лучше взять FastMM4 или еще лучше MemProof.


Darvin   (2009-04-21 15:21:00) [3]

Прошу прощения, что долго молчал, был в отъезде.
> DVM
Смотрю диспетчером задач.
> all
Рыбы там, похоже, нет. Но есть другое интересное наблюдение. Запускаю некое приложение, которое ничего не делает и сворачиваю его. Смотрю там же. Пока ничего не делаю на компьютере память этим приложением не расходуется. Как только начинаю запускать разные приложения, начинает расти расход памяти для этого приложения. С чем это может быть связано?


Palladin   (2009-04-15 07:36:00) [4]


> Slym ©   (15.04.09 05:15) [7]

Нехороший IOResult обычно вызывает исключение.


Slym   (2009-04-15 05:15:00) [5]

Palladin ©   (14.04.09 16:43) [1]
почему нет?
может IOResult нехороший, а игнорится


Riply   (2009-04-14 19:33:00) [6]

> [4] sniknik ©   (14.04.09 18:45)
> это не заповедь, это анекдот. про директора катка.

Вот черт ! Даже здесь у меня пробелы в образовании :)


DVM   (2009-04-14 18:48:00) [7]


> При этом увеличивается расход памяти приложением

где смотришь?


sniknik   (2009-04-14 18:45:00) [8]

> Возможно, Palladin имел ввиду первую заповедь рыболова:
это не заповедь, это анекдот. про директора катка.


Riply   (2009-04-14 18:13:00) [9]

> [2] Darvin   (14.04.09 16:48)
> ?

Возможно, Palladin имел ввиду первую заповедь рыболова: "Ловить рыбу там, где она есть" ? :)
(Иными словами, искать утечку в другом месте)


Darvin   (2009-04-14 16:48:00) [10]

?


Palladin   (2009-04-14 16:43:00) [11]

Здесь рыбы нет!


Наверх

Титульная страница Поиск, карта сайта Написать письмо