Где моя память поглощается - PullRequest
1 голос
/ 15 июля 2009

альтернативный текст http://img263.imageshack.us/img263/1880/leak.jpg Вот моя проблема. Если вы видите, что нет утечки памяти, но все же я получаю утечку памяти для общего блока, как показано. Когда я нажимаю на него, он дает мне следующие детали, где утечка памяти происходит из-за кварцевого ядра. Я не знаю, где я иду не так, так как я не вижу утечек в утечке.

альтернативный текст http://img263.imageshack.us/img263/6813/leak2.jpg

Ответы [ 2 ]

2 голосов
/ 15 июля 2009

Помните, что причиной «утечки» могут быть объекты, выделенные для пула автоматического выпуска. Такие библиотеки, как Three20, особенно любят это для кэширования изображений. Если это так, то рассматриваемая память не будет освобождена до тех пор, пока в ней не возникнет прямая потребность (т. Е. Автозапуск).

Если вы продолжаете использовать свое приложение, видите ли вы устойчивый рост использования памяти до сбоя? Или вы видите это как пилообразный - то есть, поднимаетесь, затем внезапно опускаетесь, затем снова поднимаетесь?

0 голосов
/ 15 июля 2009

Это похоже на случай, когда пул авто-релиза расширяется и никогда не истощается. Трудно что-либо рекомендовать, не зная подробностей вашего приложения (использует ли оно несколько экранов и таблиц, или это утилита для одной панели или игра и т. Д.)

То, что вы можете рассмотреть, - это логические точки в вашем приложении - например, при выполнении одной задачи - создать новый пул автоматического выпуска и использовать его только во время выполнения этой задачи, а затем освободить пул. Это поможет уменьшить общий объем памяти и лучше контролировать ресурсы.

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

Наконец, если вы имеете дело с большим количеством изображений, вам может потребоваться создать своего рода механизм кэширования на основе файловой системы с фиксированным числом слотов в памяти, чтобы вы могли хранить в памяти только те данные, которые вам абсолютно необходимы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...