![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запись в файл и расход памяти [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]Здесь рыбы нет!