Сбой приложения: мало памяти - PullRequest
0 голосов
/ 25 октября 2010

Мое приложение зависло из-за нехватки памяти.Я не уверен, что это полностью моя вина, потому что он перечисляет около 7 или 8 других приложений, которые упали вместеКак мне справиться с этим?

Incident Identifier: 2CC74C33-179F-4CD2-8FAA-00CF0A344749
CrashReporter Key:   1657e021ecba3a19c5ed9f0cff62947a426a2bc2
Hardware Model:      iPhone3,1
OS Version:          iPhone OS 4.1 (8B117)
Date:                2010-10-24 12:20:38 +0100
Time since snapshot: 2044 ms

Free pages:        1329
Wired pages:       21508
Purgeable pages:   0
Largest process:   Instagram

Processes
         Name                 UUID                    Count resident pages
       securityd <3dcc6e23849cb3ee197720700284156d>     309
        sandboxd <4c01175d65fe7efb292e307389d3387b>     178
     ReportCrash <2ad0d335f1b93cc74e0b5be79850229d>     255
mDNSResponderHel <a0d7f455b6f2069587ea7bc956d79655>      70
          Stocks <55e537a6739e58dc068e1436930213ba>    1162
    mediaremoted <507d59f44f735d6e2855b23a6275557a>     216
MobileMusicPlaye <02ed082c795446617957bbae8974a2c8>    1052
     dataaccessd <40c418e18e9bbd950ef7e3fb593645de>     618
             spd <6419715f9e6891201e16b722fca84793>     126
      MobileMail <215c71d2434ce352d04786b93cda5340>    2483
      calaccessd <90c4c48a02f0dbf0d1adaad27b8d5945>     427
       MobileCal <db3e6efa621fc989420ccc43298d5b80>    1619 (jettisoned)
      StockTwits <3786112667f535bff10bb6f7966bb852>    2067 (jettisoned)
        Mint.com <0f38a50fd98c755ef34e0fe8b0c25adc>    4461 (jettisoned)
        AppStore <99bf23a9224aa148ac3e009873f9c7b9>     998 (jettisoned)
          Reeder <dcb69039fa5b4426b3db9f9920054f3e>    5835 (jettisoned)
           Meebo <22f145af489fb92066006a5a3cac813a>    3684 (jettisoned)
    MobileSafari <67a5ebc3754e0ce1e482760c7e56f9c5>    3512
           Skype <d570c35d6d2f51713e874937dd8112f4>    4769
        Facebook <ae1fa9da7f8951ffbf693bbd0ed36aaf>    2459 (jettisoned)
     MobileTimer <98640aaee653fc9188652d6cdab13d67>    1294 (jettisoned)
         Twitter <62edb7ce453c603ad1b8b3bdcbc4910b>    5843
 MobileSlideShow <40eded841026ed418bebe49a342f2c8f>    3566
       Instagram <25e2a98b5d3de6f2cf2f246df8a49a9d>   11523 (active)
            misd <d9b8f85780f931007d309fc836185ab0>     119
MobileStorageMou <bd2184fe17b3c9ccbadd9120bd669c99>     102
     Preferences <9123dcc666c97bb1d63a5921968c8b34>    1666
     MobilePhone <b50b6283b8c52a51fb9e48ee5c909b80>     804
         imagent <4ef86a68405738280f19e5fbc0af56db>     291
             lsd <4fb2cf7b5475b39b2c56d9588821eb45>     157
        SCHelper <30ca097cbb6306cf66157da7fd4de07c>     110
         notifyd <ab40010781bef81228df18acf1acdbb2>     129
        BTServer <ce7c062b4df09b835c77a6086b7ef0d8>     136
      CommCenter <a8a6257faa2a5213f0a2f5c763f9acfe>     335
     SpringBoard <983033e585706c1c6c99eed85cd8dbdb>    8315 (active)
      accessoryd <b99ccd1b099c015edb93e8d1cbf03e36>     109
            apsd <f031a0e787d8840097a4812fb1c89f5e>     240
        awd_ice3 <b598d42ac4fdd950ac5c2c9a1835f70e>     124
         configd <b2b3af98743381e759dd5b17115a0378>     548
   fairplayd.N90 <3ae05b3bbcb034b0d4d4712e8fc19f99>      95
       locationd <963c5d93cfaf1b1139045b1658ecfc26>    1031
   mDNSResponder <68dc311f118d171ede7b91f43c323b7d>     235
    mediaserverd <3ebe3a043c2dba96b70d8ede30bcb6ab>    1220
       lockdownd <bfeda752b819f06f4828e112d3ca695c>     326
         syslogd <60e8005a73e76d6ee81a8b45a9443a16>      94
         launchd <b15ff1a8f2f37c3b0df0343899757b17>     103

**End**

Ответы [ 5 ]

2 голосов
/ 25 октября 2010

Это ожидаемое поведение. Фоновые приложения продолжают работать только на досуге переднего приложения. Если самое передовое приложение решит, что оно нуждается в ваших ресурсах, у вас нет выбора, кроме как немедленно отказаться от них.

1 голос
/ 25 октября 2010

Убедитесь, что вы исправили все утечки в приложении с помощью инструментов и встроенного анализатора сленга X-кода.
Запустите приложение как можно больше времени с инструментами. Выпустите все переменные экземпляра в методе dealloc и убедитесь, что вы реагируете на didRecieveMemoryWarning:.
установите точку останова в didRecieveMemoryWarning:, и вы сможете подтвердить, что это ваша ошибка.

0 голосов
/ 25 октября 2010

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

В конце концов я закомментировал [super didReceiveMemoryWarning] в моем RootViewController (я создал свое приложение, используя шаблон приложения навигации).Я думаю, что произошел сбой, потому что RootViewController был выпущен в этом вызове.

0 голосов
/ 25 октября 2010

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

Вместо этого, если ваше приложение активно, вам нужно сбросить любую память, которая вам не нужна, когда вы получите сообщение applicationDidReceiveMemoryWarning:в UIApplicationDelegate или эквивалентном уведомлении .

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

Однако вы никогда не сможете гарантировать, что никогда не будетепрекращено.

0 голосов
/ 25 октября 2010

Я сомневаюсь, что вы можете. Всегда проверяйте возвращаемое значение ваших выделений, освобождайте память, когда закончите, используйте как можно меньше памяти и (я не помню, сработает ли это на iPhone) запускайте valgrind, чтобы обнаружить утечки памяти в вашем приложении

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