Почему объем памяти программы Delphi продолжает увеличиваться при использовании FastMM

#delphi #memory-management #memory-leaks #fastmm

#delphi #управление памятью #утечки памяти #fastmm

Вопрос:

Я использую Delphi 6, у которого есть старый менеджер памяти.

Моя программа считывает и обрабатывает большой набор данных. Вся память освобождается корректно всякий раз, когда я очищаю набор данных или выхожу из программы. У него вообще нет утечек памяти.

после запуска моей программы без набора данных было использовано 24 МБ. После загрузки большого набора данных используется 250 МБ. 24 МБАЙТ после полной очистки набора данных.

но когда я использовал Delphi 2007, в который встроен диспетчер памяти FastMM4, освобождалась не вся память (у меня произошла утечка памяти при компиляции того же кода с использованием Delphi 2007)

после запуска моей программы без набора данных было использовано 24 МБ. после загрузки большого набора данных используется 300 МБ. 70 МБАЙТ после полной очистки набора данных.

но если я использую ShereMem в проекте .dpr (Dlphi 2007) с Borlandmm.dll с delphi6 он работает нормально, без утечки памяти

я использовал внешний FastMM (не встроенный) с Delphi 6, результат такой же, как в Delphi 2007 (у меня утечка памяти при использовании Delphi 6 с FastMM)

похоже, что при использовании FastMM возникает проблема

как можно устранить эту проблему и продолжать использовать FastMM?

Комментарии:

1. Это звучит как совершенно нормальное поведение для менеджера памяти. Они часто предпочитают сохранять память, а не возвращать ее в ОС, потому что это более эффективно. FastMM широко используется и хорошо зарекомендовал себя. Утечки нет. Почти наверняка с вашим кодом нет проблем, и вы просто неверно интерпретируете информацию. Испытывали ли вы какие-либо реальные проблемы во время выполнения?

2. Спасибо @DavidHeffernan, так что это нормально, у меня нет проблем во время выполнения

3. Я имею в виду, что я не могу предоставить вашей программе отчет о работоспособности отсюда, не зная об этом. Но то, что вы описываете, вовсе не звучит необычно. Считывание статистики памяти из диспетчера задач не так просто, как вы могли бы подумать. Такого рода вопросы здесь задают еженедельно. Попробуйте использовать вашу программу в течение нескольких часов или дней, не перезапуская ее? Продолжает ли она работать правильно?