Live Bytes vs Real Memory in Activity Monitor on iOS

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

Когда я запускаю инструмент "Allocations", он говорит, что у меня около 2 МБ "Live Bytes", и эта цифра остается примерно постоянной по мере того, как я продвигаюсь по приложению (скачки до 3 МБ или около того, когда приложение занято, но затем снова падает до 2 МБ).

Но когда я запускаю инструмент "Activity Monitory", "Реальная память" моего приложения составляет 25 МБ после его запуска и быстро растет всякий раз, когда происходит рисование в моем CALayer. Менее чем за минуту она превышает 100 МБ.

Почему "Live Bytes" показывает 2 МБ, а "Real Memory" - 100 МБ?

Мой CALayer рисует тонны путей, он загружает CPU на 100% на несколько секунд, чтобы закончить одну операцию рисования, и он загружает все эти точки из объекта NSData в значения CGPoint, а затем снова их удаляет (объект NSData - это сжатая версия рисуемых точек, хранящая дельты от одной точки к другой, поэтому я держу его в RAM, но не держу фактические CGPoints).

Он также кэширует результат рисования в UIImage, и они хранятся в массиве, который не должен увеличиваться более чем на 500 КБ.

10
задан Abhi Beckert 9 January 2012 в 20:48
поделиться