Извините за длинный пост ... У меня есть привычка быть довольно многословным.: -P
У меня странная проблема с моим приложением для iOS, о которой пользователи сообщают уже несколько месяцев.Я изучал это несколько раз, но продолжаю сталкиваться с препятствиями.Приложение отброшено, но, по-видимому, не использует слишком много памяти в то время, когда оно выбрасывается.Например, вот один журнал пользователя (имя приложения и идентификаторы изменены):
Incident Identifier: OMIT
CrashReporter Key: OMIT
Hardware Model: iPhone2,1
OS Version: iPhone OS 4.3.5 (8L1)
Kernel Version: Darwin Kernel Version 11.0.0: Sat Jul 9 00:54:20 PDT 2011; root:xnu-1735.47~1/RELEASE_ARM_S5L8920X
Date: 2011-10-01 09:50:03 +0100
Time since snapshot: 41 ms
Free pages: 710
Wired pages: 10076
Purgeable pages: 416
Largest process: SpringBoard
Processes
Name UUID Count resident pages
MY_APP <f01c118296fe329899981e37e00c6cc3> 2258 (jettisoned) (active)
MobileMusicPlaye <c26fcc882cf130f09979f9ca08521fce> 1024 (jettisoned)
MobilePhone <d3042adf269630daa58e43d0ba5eeb54> 649 (jettisoned)
MobileMail <573ff3a3e09334c7aa51d8568c845e11> 716 (jettisoned)
lsd <3fafa485b73836acb973d50feabd963a> 148
notifyd <9966082842de313a8e05a001c783faf4> 117
BTServer <01550e9527353eecae41ebee0f889603> 182
CommCenter <7d9446365b4836968ae361626ef8f939> 440
SpringBoard <5c55c6fba0843b0e924e116413b8c9d4> 3305 (active)
accessoryd <d30e340e36df356bbde3347a6ed1ef87> 160 (jettisoned)
apsd <47ffc9ce9f84371588bd3f937aaa20bb> 278
configd <a6d457fca42732d9ba809d03a2b3e3ae> 427
fairplayd.N88 <46c1d3fbe93a370089f783f96a5cf531> 177
locationd <9088e845dcbe37d890c8758655bf34c6> 1065
mDNSResponder <caf94711b8093dc5bc5736306f8ae818> 200
mediaremoted <21af791e80823c9f90f0be2b77a3d885> 251
mediaserverd <c731263114c33a07aef7bccdcf667271> 1512
lockdownd <1c7f2b41744c35dc92f679e90a73e240> 278
syslogd <d81669e7bdb93f9b9012020beac826f4> 99
usbethernetshari <25130d2f9a0334e3ae28780250343144> 110
launchd <e2d41e07a0743a089eadbae765709c82> 88
**End**
Это устройство 3GS, и из того, что я видел в журналах LowMemory, там не так много работы (13484 страницы).... около 55 МБ?)Наше приложение является вторым по величине, но на 9,3 МБ резидент вряд ли огромен.Это также постоянно происходит после примерно 15 минут использования для затронутых пользователей (но список затронутых пользователей довольно мал).
Как видно из журнала, приложение было активным (телефон был заблокирован сверху), так какэто всегда тот случай, когда сообщается.Мы получаем предупреждения о нехватке памяти до того, как были отброшены, и должным образом реализуем viewDidUnload и didReceiveMemoryWarning во всех представлениях.Похоже, он тоже освобождает память, так как 9,3 МБ меньше, чем обычно, около 12 МБ.Кроме того, приложение не обновляет представления, пока оно заблокировано в соответствии с рекомендациями Apple (и потому, что это просто хорошая идея. :-P).Мы не храним много вещей в памяти ... большинство находится в БД и захватывается только тогда, когда это необходимо, а затем освобождается.Вероятно, мы используем больше памяти для образов пользовательского интерфейса, чем что-либо еще (что должно быть выпущено в viewDidUnload для загруженных представлений).
Из обширного тестирования памяти с утечками и проверки использования памяти с помощью статистики и распределения виртуальных машин, я вполне уверен, что тамнет утечек памяти, чрезмерных скачков или использования памяти (по крайней мере, на устройствах 3G и 3GS, на которых я тестировал).Размер грязной памяти также не кажется чрезмерно высоким (обычно около 11 МБ при отслеживании и всего 12 МБ резидентного объема).Журнал низкой памяти отражает это.И, поскольку я параноик, у меня даже пользователи запускались с регистрацией памяти, вдохновленной этим обсуждением: Приложение iPhone использует 150 МБ памяти и все еще не выдает предупреждение о нехватке памяти! .Регистрация, кажется, подтверждает низкое использование памяти (резидентная память приложения была зарегистрирована как 9 773 056 байт непосредственно перед вышеприведенным сбросом).Виртуальный размер большой (342 740 992), но ... он виртуальный.: -P
Это влияет только на небольшое подмножество пользователей, и я только когда-либо видел, что об этом сообщалось на устройствах 3GS (версия iOS 4.x ... меняется, но, кажется, началась с 4.2, я думаю),И это последовательно происходит примерно через 15 минут для затронутых пользователей.
Я пытался заставить пользователя использовать приложение в простейшем случае, после того, как о нем сообщили в случае странного поведения, которое вызывает проблему, но этовсе еще происходит.Это заставляет меня поверить, что это проблема с телефонами пользователей, но я не люблю говорить им, что без чего-либо, что могло бы указать на это, может быть проблема.Я не могу воспроизвести его на своих тестовых устройствах 3GS или 3G.
Кажется, это не обычные виновники (высокое использование грязной памяти, утечки памяти и т. Д.), Поэтому я в значительной степени озадачено том, как решить этот.Какие-либо предложения?Или, по крайней мере, путь, который я могу выбрать, чтобы попытаться продолжить расследование?: -Р