У меня возникла ситуация, когда цикл загрузки, а затем закрытия документа израсходовал несколько МБ ОЗУ. Эта память не просачивается, поскольку что-то владеет ею и очищает ее при выходе из приложения (Visual Leak Detector и инструмент Mac Leaks показывают соглашение по этому вопросу). Тем не менее, я хотел бы узнать, куда это идет. Я предполагаю, что это какой-то кэш в приложении, который заполняется при загрузке документа, но не освобождается при закрытии документа. Какие методы или инструменты я мог бы использовать, чтобы узнать, где производятся эти ассигнования?
UPDATE:
После публикации Ханса я добавил в приложение цикл для многократного открытия и закрытия документов. Я обнаружил, что после загрузки первой пары документов был начальный скачок в использовании памяти («Private Bytes»), но затем он больше не увеличивался каждый раз. Таким образом, это говорит о том, что новых распределений нет, и очевидное увеличение, скорее всего, будет связано с артефактом подкачки.
Я также более подробно рассмотрел инструменты на Mac, которые были полезны для наблюдения за распределением: создайте инструмент, состоящий из инструментов Allocations и Leaks, затем добавьте снимок кучи в начале и конце цикла. и в списке Heapshots он покажет все дельты распределения относительно последнего снимка. Это говорит о том, что на Mac распределение памяти увеличивалось , но это происходило из-за внутренних кэшей, таких как рисование CoreGraphics, над которыми у нас мало контроля.