При профилировании моего приложения с помощью Instruments (поиск утечек памяти) с симулятором iPhone 5 для iOS 5 я получаю совершенно другие результаты, чем при использовании iPhone 4 с iOS 5. На первом рисунке показаны результаты профилирования среальное устройство, а второе с симулятором:
реальное устройство:
iOS 5 Simulator:
Этот профиль используется в одной и той же точке приложения в обоих случаях: завершение viewDidLoad в жизненном цикле представления rootViewController.Я ждал в обоих из них, чтобы общая выделенная память стабилизировалась.Как вы можете видеть на графике устройства, в 00:10 наблюдаются некоторые экстремальные колебания, которых нет в симуляторе.На реальном устройстве общий объем выделенной памяти, около 00:08, увеличивается с 1 МБ до 3,5 МБ, затем уменьшается до 1,5 МБ и, наконец, достигает 4,74, где он стабилизируется.Выделенная память для симулятора является гораздо более линейной, с устойчивым и быстрым ростом до примерно 2,35 МБ, где она стабилизируется.
Еще одна вещь, которую следует отметить, - это наличие 2,25 МБ выделенной памяти, присутствующей на устройстве, но неСимулятор от malloc и 700+ кб от CFNumber.Поскольку я относительно новичок в использовании инструментов и профилирования, я не совсем уверен, нормально ли это.Быстрый поиск в Google не дал ничего определенного.Эти 2,25 МБ и 700 КБ более чем компенсируют разницу в распределении памяти.Чтобы уравновесить ситуацию, существует больше записей для malloc с различными объемами памяти, присутствующими в тесте Simulator, которых нет в тесте устройства.
Кроме того, я обнаружил, что когда второй UIViewController помещается в стек UINavigationController, выделяетсяобъем памяти на реальном устройстве увеличивается примерно до 8,5-9 МБ, но на симуляторе - всего от 4,5 до 4,5 мегабайт вершин .
Я знаю, что устройство должно работатьсильно отличается от симулятора, но разве распределение памяти не должно быть почти одинаковым, потому что на обоих устройствах выполняется один и тот же код?Я бы понял, если это профилирование производительности, но для распределения памяти, кажется, цифры должны быть довольно похожи.Кто-нибудь может пролить свет на то, нормально это или нет?