Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.26;
Скачать: CL | DM;

Вниз

Как не засорять память?   Найти похожие ветки 

 
olookin ©   (2003-12-15 14:09) [0]

Проблема состоит в следующем - при постоянной работе программы в памяти происходит накопление данных. Это я заметил давно и потому постарался корректно избавляться от динамических массивов, компонентов и экземпляров классов, которые периодически создаются или уничтожаются. Как выяснилось - или не до конца корректно, или не все элементы очищаю.

Что же я должен очищать? Мне кажется, следующие штуки:
- динамические массивы (после вызова SetLength(mas,N) использую mas:=nil или Finalize(mas))
- динамически создаваемые компоненты (после вызова Create использую Destroy или Free (где как))
- классы, которые содержат динамические массивы (в destructor-е класса все массивы приравниваю nil)
- записи, содержащие динамические массивы - то же самое
- если где то использую Parent, то стараюсь не забывать убивать этот Parent перед убиением самого компонента
- динамически создаваемые массивы классов (как правило содержащие еще и окно). Здесь все те же правила. За исключением того, что использую еще Move при удалении промежуточного элемента в массиве классов. Перед этим разумеется уничтожаю само окно.
- наконец, массивы, используемые при вызове библиотечных функций (передающиеся как переменная в библиотеку). Не знаю наверняка, удаляются ли они из памяти, если к ним применять nil.

Прав ли я в своих рассуждениях? Может что то еще нужно контролировать? (а то за несколько часов работы программа начинает кушать почти 40М памяти - это при начальных 6-7М)...

Заранее спасибо за помощь.


 
Иван Шихалев ©   (2003-12-15 14:13) [1]

Возможно, растет не занятая память в куче, а сама куча. Можно поэкспериментировать с HeapSize() и HeapCompact() (используя GetProcessHeap())



Страницы: 1 вся ветка

Текущий архив: 2003.12.26;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.018 c
1-86441
Stefan
2003-12-13 13:59
2003.12.26
Как удалить пункт из меню ?


3-86311
tchn
2003-12-01 22:54
2003.12.26
Required поля?


3-86242
Слэш
2003-12-04 11:48
2003.12.26
Как составить такой SQL запрос ?


8-86459
JohnJ
2003-08-27 23:01
2003.12.26
Определение координат на DXDraw


3-86245
Philin
2003-12-04 08:30
2003.12.26
Как в DbGrid сделать ScrollBar типа Flat?