Если приложение будет убито низкой памятью обычно generates a low memory report:
При обнаружении условия низкой памяти, система виртуальной памяти прошивки опирается на сотрудничестве приложений, чтобы освободить память. Уведомления с низкой памятью отправляются всем запущенным приложениям и процессам в качестве запроса на освобождение памяти, в надежде уменьшить объем используемой памяти. Если давление памяти все еще существует, система может прекратить фоновые процессы, чтобы уменьшить давление памяти. Если достаточное количество памяти может быть освобождено, ваше приложение будет продолжать работать, и отчет о сбоях не будет сгенерирован. Если нет, ваше приложение будет прекращено iOS, потому что недостаточно памяти для удовлетворения требований приложения, и отчет о низкой памяти будет сгенерирован и сохранен на устройстве.
Формат отчета с низкой памятью отличается от других отчетов о сбоях тем, что трассировки стека для потоков приложений отсутствуют. Использование памяти каждого процесса сообщается с точки зрения количества страниц памяти, которые на момент написания этой книги составляют 4 КБ. Вы увидите «(отброшенное)» рядом с именем любого процесса, завершенного iOS, чтобы освободить память. Если вы видите его рядом с именем вашего приложения, это подтверждает, что приложение было прервано для использования слишком большого количества памяти.
Этот отчет можно увидеть обычно в журналах сбоев, но, по моему опыту, этот журнал не гарантируется.
An example of a memory report:
Incident Identifier: 30E46451-53FD-4965-896A-457FC11AD05F
CrashReporter Key: 5a56599d836c4f867f6eec76afee451bf9ae5f31
OS Version: iPhone OS 3.1.3 (7E18)
Date/Time: 2012-10-17 21:39:06.967 -0400
Free pages: 96
Wired pages: 10558
Purgeable pages: 0
Largest process: Rage Masters
Processes
Name UUID Count resident pages
Rage Masters <cc527ca9b51937c5adbe035fe27a7b12> 9320 (jettisoned) (active)
mediaserverd <3d3800d6acfff050e4d0ed91cbe2467e> 255
dataaccessd <13d80b2e707acc91f9aa3ec4c715b9cc> 505
syslogd <8eddddc00294d5615afded36ee3f1b62> 71
apsd <32070d91b216d806973c8f1b1d8077a4> 171
securityd <b9e51062610d27f727c5119b8f80dcdf> 243
notifyd <591dd4dd804b4b8741f52335ea1fa4ab> 2027
CommCenter <b4b87526ae086bb62c982f1078f43f81> 189
SpringBoard <324939a437d1cca1fa4af72d9f5d0eba> 2158 (active)
accessoryd <8f21c8b376d16e2ccb95ed6d21d8317a> 91
configd <85efd41aceac34ccc0019df76623c7a9> 371
fairplayd <a2eaf736b3e07c7c9a2c82e9eb893555> 93
mDNSResponder <df1cd275e4ad434e0575990e8e1da4cb> 292
lockdownd <80d2bd44c0bcca273d48ce52010f7e65> 1204
launchd <a5988245aade809bf77576f1d9de42c5> 72
На самом деле, это одна из проблем, с которыми команда crashlytics является trying to solve:
Это сложно, так как эти события на самом деле отдельные события из аварий. События с низкой памятью сложны для захвата, поскольку нет известного способа захвата выхода с низкой памятью с помощью открытого API.
Однако мы работаем над системой, которая будет производить запись этих событий. Будьте на связи!
Что касается фона сбой обычно вы получаете журнал аварии с чем-то вроде this message:
Application Specific Information:
MyMapApp[1234] has active assertions beyond permitted time:
{(
<SBProcessAssertion: 0x63a07a0> identifier: CoreLocationRegistration process: MyMapApp[1234] permittedBackgroundDuration: 600.000000 reason: finishTask owner pid:1234 preventSuspend preventIdleSleep ,
<SBProcessAssertion: 0xa095050> identifier: CoreLocationBackgroundClient process: MyMapApp[1234] permittedBackgroundDuration: 600.000000 reason: finishTask owner pid:1234 preventSuspend preventIdleSleep
)}
Не поощрять, если crashlytics испытывает проблемы с ловлей это, но я буду смотреть. Кроме того, знаете ли вы, что может быть сообщено в терминах завершения из-за того, что фоновый процесс занимает слишком много времени? На самом деле я больше подозреваю. – jeffjv
Отредактировано, чтобы добавить случай, когда в фоновом режиме происходит сбой приложения. –