奇怪的Jetsam /低内存崩溃 - 没有内存警告

时间:2016-04-20 07:35:03

标签: ios iphone crash low-memory

感谢你对这个问题的帮助,我真的被卡住了。

我的一位测试人员报告我的应用经常崩溃。 iOS日志报告:

Apr 15 23:52:14 iPhone SpringBoard[58] <Warning>: Application 'UIKitApplication:de.loffler.XBMCMusicRemotePro[0x553a]' was killed by jetsam.  
Apr 15 23:52:14 iPhone UserEventAgent[26] <Warning>: 440891049998: id=de.loffler.XBMCMusicRemotePro pid=1518, state=0 

所以应用程序因内存不足而被杀死。通常,我知道该做什么(寻找泄漏等),然而,有一些问题非常奇怪:

1。内存使用率低

根据JetsamEvent.ips,我的应用程序的内存使用量仅为32MB(如果我正确解释报告:2050个常驻页面* 16384页面大小)。测试仪有一个带有2GB内存的iPhone 6S,所以在崩溃时,应用程序使用不超过设备整个内存的2%。另外,如果我总结报告中所有条目的“rpages”,我只是得到了ca. 620MB的使用量。也许我在读报告时有一些误解......

我编写了一个测试函数,只消耗内存直到应用程序被杀死。在我的iPhone 5S上运行此功能时,应用程序只有在达到600MB内存使用时才会被杀死。

{"timestamp":"2016-04-15 23:52:13.13 +0200","bug_type":"298","os_version":"iPhone OS 9.3 (13E234)"}  
{  
"crashReporterKey" : "bec1fa98267fbf2d761102140fcf61aa7b6b5e25",  
"kernel" : "Darwin Kernel Version 15.4.0: Fri Feb 19 13:54:52 PST 2016; root:xnu-3248.41.4~28\/RELEASE_ARM64_S8000",  
"product" : "iPhone8,1",  
"incident" : "A2B3C5FF-8ECC-4E07-BEDA-E847061F396B",  
"date" : "2016-04-15 23:52:13.13 +0200",  
"build" : "iPhone OS 9.3 (13E234)",  
"timeDelta" : 1739,  
"memoryStatus" : {  
"compressorSize" : 76679,  
"pageSize" : 16384,  
"compressions" : 2526427,  
"memoryPages" : {  
   "active" : 24493,  
   "throttled" : 0,  
   "fileBacked" : 24113,  
   "wired" : 13007,  
   "anonymous" : 12915,  
   "purgeable" : 127,  
   "inactive" : 10955,  
   "free" : 2290,  
   "speculative" : 1580  
},  
"uncompressed" : 125795,  
"decompressions" : 143684  
},  
"largestProcess" : "Facebook",  
"processes" : [  
{  
...  
{  
   "rpages" : 2050,  
   "states" : [  
     "frontmost",  
     "resume"  
   ],  
   "name" : "KodiMusicRemoteP",  
   "pid" : 1518,  
   "reason" : "vm-thrashing",  
   "fds" : 50,  
   "uuid" : "5103a88a-917f-319e-8553-c0189dd1abac",  
   "purgeable" : 127,  
   "cpuTime" : 4.619693,  
   "lifetimeMax" : 3557  
},  
...  
}  

2。没有记忆警告

我正在将低内存警告写入日志文件(通过Cocoa Lumberjack),但在我的测试人员日志中,我找不到任何此类日志输出。我用我的测试函数测试了代码,它运行良好。

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application  
{  
    DDLogError(@"applicationDidReceiveMemoryWarning");  
    [DDLog flushLog];  

    // ... (do some other stuff, release memory)  
}  

第3。其他地方都没见过

其他十个beta测试者中没有人报告过这个问题,而我自己也没有看到我的iPhone 5S,它的内存是6S的一半。

4。没有典型的内存崩溃情况

我的测试人员报告该应用程序有时运行正常一段时间,但当它崩溃并重新启动时,它经常会再次快速崩溃(如10秒后)。基于我的应用程序的体系结构,我没有看到内存泄漏如何导致这样的行为。

感谢您的想法, 马库斯

0 个答案:

没有答案