我的应用程序崩溃并关闭,但几乎没有提供任何有关原因的信息。

8
我遇到了崩溃问题,并希望能得到一些关于如何找到并修复问题的建议。游戏会突然关闭。当应用程序在调试器中运行时,没有调试输出可以说明为什么会像“正常”崩溃一样。我知道它发生在LoadView之后,因为LoadView结尾处的NSLog是最后一个输出,在< strong>相同屏幕上每次都这样。以下是组织者(“未知”进程,我认为是因为它在调试器中运行?)的有限崩溃报告表格。这只在ios6上开始出现。根据工具,似乎没有内存泄漏,但我不确定是否完全信任它。崩溃往往发生在你玩游戏一段时间并来回浏览屏幕时,所以感觉像是一个泄漏。然而,它总是在返回到相同的屏幕时发生,这表明它是那个视图控制器的问题。我不知道rpages具体是什么,也不知道90974是否过大。
Incident Identifier: 7D34217C-9F8E-49B0-B399-1F5573355F31
CrashReporter Key:   29ce6ea76874d5a03d826014a1f50e1a2160db41
Hardware Model:      iPhone3,1
OS Version:          iPhone OS 6.0 (10A403)
Kernel Version:      Darwin Kernel Version 13.0.0: Sun Aug 19 00:27:34 PDT 2012; root:xnu-2107.2.33~4/RELEASE_ARM_S5L8930X
Date:                2012-10-30 22:48:15 -0700
Time since snapshot: 206 ms

Free pages:        958
Active pages:      2673
Inactive pages:    2118
Throttled pages:   101092
Purgeable pages:   0
Wired pages:       22186
Largest process:   MyCrashingApp

Processes
 Name                    <UUID>                       rpages       recent_max       [reason]          (state)

  MobileMail <bff817c61ce33c85a43ea9a6c98c29f5>         1165             1165         [vm]         (resume) (continuous)
  MobilePhone <3fca241f2a193d0fb8264218d296ea41>        898              898         [vm]         (resume) (continuous)
  tccd <eb5ddcf533663f8d987d67cae6a4c4ea>               119              119         [vm]         (daemon)
  MyCrashingApp <f6c54a2392523abe8745d853870bf985>      90974            90974         [vm]         (audio) (frontmost) (resume)
  ptpd <04a56fce67053c57a7979aeea8e5a7ea>               665              665                      (daemon)
  locationd <892cd1c9ffa43c99a82dba197be5f09e>          1237             1237                      (daemon)
  dataaccessd <2a3f6a518f3f3646bf35eddd36f25005>        614              614                      (daemon)
  mediaserverd <80657170daca32c9b8f3a6b1faac43a2>       1316             1316                      (daemon)
  syslogd <cbef142fa0a839f0885afb693fb169c3>            139              139                      (daemon)
  wifid <9472b090746237998cdbb9b34f090d0c>              284              284                      (daemon)
  iaptransportd <f784f30dc09d32078d87b450e8113ef6>      192              192                      (daemon)
  SpringBoard <27372aae101f3bbc87804edc10314af3>        3477             3477                     
  backboardd <5037235f295b33eda98eb5c72c098858>         9957             9957                      (daemon)
  aggregated <8c3c991dc4153bc38aee1e841864d088>         75               75                      (daemon)
  BTServer <c92fbd7488e63be99ec9dbd05824f5e5>           198              198                      (daemon)
  configd <4245d73a9e96360399452cf6b8671844>            897              897                      (daemon)
  fairplayd.N90 <3ac48d9cfb143757bccce4fe6c154533>      135              135                      (daemon)
  fseventsd <996cc4ca03793184aea8d781b55bce08>          315              315                      (daemon)
  imagent <1e68080947be352590ce96b7a1d07b2f>            528              528                      (daemon)
  mDNSResponder <3e557693f3073697a58da6d27a827d97>      237              237                      (daemon)
  lockdownd <ba1358c7a8003f1b91af7d5f58dd5bbe>          207              207                      (daemon)
  powerd <2d2ffed5e69638aeba1b92ef124ed861>             123              123                      (daemon)
  UserEventAgent <6edfd8d8dba23187b05772dcdfc94f90>     427              427                      (daemon)
  debugserver <185719f06f1631d4922c652bdd4c8529>        0                0                      (daemon)
  gputoolsd <889065a15ba8372ca533e023c10bd776>          0                0                      (daemon)
  springboardservi <ff6f64b3a21a39c9a1793321eefa5304>   0                0                      (daemon)
  syslog_relay <45e9844605d737a08368b5215bb54426>       0                0                      (daemon)
  syslog_relay <45e9844605d737a08368b5215bb54426>       0                0                      (daemon)
  DTMobileIS <23303ca402aa3705870b01a9047854ea>         0                0                      (daemon)
  afcd <b0aff2e7952e34a9882fec81a8dcdbb2>               120              120                      (daemon)
  notification_pro <845b7beebc8538ca9ceef731031983b7    118              118                      (daemon)
  filecoordination <fbab576f37a63b56a1039153fc1aa7d8>   115              115                      (daemon)
  distnoted <a89af76ec8633ac2bbe99bc2b7964bb0>          101              101                      (daemon)
  apsd <94d8051dd5f5362f82d775bc279ae608>               280              280                      (daemon)
   networkd <0032f46009f53a6c80973fe153d1a588>          147              147                      (daemon)
   CommCenterClassi <c82f228b14a830cdb88e3cc1068330b3>  616              616                      (daemon)
   notifyd <51c0e03da8a93ac8a595442fcaac531f>           167              167                      (daemon)
   ReportCrash <8c32f231b2ed360bb151b2563bcaa363>       135              135                      (daemon)

结束


你在使用支持ARC的3GS设备运行吗? - Saurabh Passolia
你解决这个问题用了什么方法?请帮我,我也遇到了同样的问题。 - h.kishan
这其实是一个非常大的内存泄漏问题。如果你运行分析器,你应该能够看到内存使用量上升,当它跳动(或者没有下降)时,将指向这个问题。在我的情况下,我很愚蠢地从一个视图控制器过渡回到了我之前从中过渡的视图控制器,而不是像这样做:[self dismissViewControllerAnimated:YES completion:NULL]; - David John
1个回答

36

你的应用程序崩溃是因为Jetsam(也称为memorystatus),它是iOS低内存条件处理器,会杀死它(类似于Linux的OOM和Android的LowMemory Killer)。你看到的是内存快照。允许我解释一下:

Free pages:        958 - 空闲物理内存(以4K倍数表示)
Active pages:      2673 - 物理内存中最近使用过的页面数
Inactive pages:    2118 - 物理内存中最近未使用的页面数
Throttled pages:   101092 - 受限制的页面数(长话短说,与本文无关)
Purgeable pages:   0 - 在低内存情况下可以被踢出的页面数
Wired pages:       22186 - 长期锁定的页面数,主要用于内核目的或共享库

您的应用程序有不幸的、可疑的荣誉——相对于其他应用程序,它拥有最多的常驻内存(数量级之间)。所以当低内存条件发生时——某个应用程序想要malloc()一个大块,而没有足够的自由页面时——Jetsam简单地选择顶部内存——砰。 Kill -9。因此,没有调试转储等等。iOS没有交换,因此无法转储进程以清除内存。唯一的方法是退出。死亡。

你可以做的:

在Jetsam杀死您之前,通常会有一个低内存通知事件,而Obj-C运行时将其翻译成-didReceiveMemoryWarning。所以要处理它。根据您的描述,您可能还想释放UIViews。它们消耗了很多内存。


2
谢谢您的解释!您介意分享一下有关页面限流的“长篇故事”的链接吗?我在网上找不到任何信息。 - ICanChange

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接