我有一个应用程序,当我运行它几分钟时,它总是崩溃。我检查崩溃日志,它总是说 malloc: * mmap(size = 1048576)失败(错误代码= 12) * 错误:无法安全地分配区域 我使用仪器工具检查了内存泄漏,但没有发现任何内存泄漏。我想知道是否有一些仪器无法找到的内存泄漏,或者其他原因导致崩溃。 任何帮助将不胜感激!
修改
我用时间分析器来检查性能。但我不知道关键点是什么,因为最重要的是这些:
运行时间自我符号名称 6494.0ms 9.4%6494.0 - [DLStarView initWithDefault:突出显示:position:allowFractions:] (我的应用程序有很多列表,每个项目都有自制的星形视图)
运行时间自我符号名称 5848.0ms 8.4%5848.0 + [ASIHTTPRequest runRequests] (我的应用程序总是从服务器获取数据)
运行时间自我符号名称 2169.0ms 3.1%2169.0 - [BMKUserLocationInternal updateLocationInfo]
运行时间自我符号名称 1435.0ms 2.0%1435.0 - [EGOCache imageForKey:]
运行时间自我符号名称 1252.0ms 1.8%1252.0 - [KLRestDetailViewController tableView:cellForRowAtIndexPath:]
是否有用?我如何检查是否填充了一堆东西?
PS:这次崩溃只出现在真实设备上,我在模拟器中运行了大约20分钟,应用程序仍然运行顺畅,我的设备是iPhone4S iOS 6.0.1我设置了一个断点并收到了消息:
崩溃线程消息并不总是相同的 但在控制台输出中,它总是说 malloc: * mmap(size = 1048576)失败(错误代码= 12) 错误:无法安全地分配区域 * *在malloc_error_break中设置断点以进行调试
我对这个bug感到困惑了好几天,有什么想法吗?谢谢!
我用时间分析器来检查性能。但我不知道关键点是什么,因为最重要的是这些:
运行时间自我符号名称 6494.0ms 9.4%6494.0 - [DLStarView initWithDefault:突出显示:position:allowFractions:] (我的应用程序有很多列表,每个项目都有自制的星形视图)
运行时间自我符号名称 5848.0ms 8.4%5848.0 + [ASIHTTPRequest runRequests] (我的应用程序总是从服务器获取数据)
运行时间自我符号名称 2169.0ms 3.1%2169.0 - [BMKUserLocationInternal updateLocationInfo]
运行时间自我符号名称 1435.0ms 2.0%1435.0 - [EGOCache imageForKey:]
运行时间自我符号名称 1252.0ms 1.8%1252.0 - [KLRestDetailViewController tableView:cellForRowAtIndexPath:]
是否有用?我如何检查是否填充了一堆东西?
PS:这次崩溃只出现在真实设备上,我在模拟器中运行了大约20分钟,应用程序仍然运行顺畅,我的设备是iPhone4S iOS 6.0.1我设置了一个断点并收到了消息:
libsystem_c.dylib`malloc_error_break:
0x33c742e8:push {r7,lr}
0x33c742ea:mov r7,sp
0x33c742ec:nop
0x33c742ee:nop
0x33c742f0:pop {r7,pc}
0x33c742f2:nop
0x3393ed86:movs r2,#0
0x3393ed88:ldr r0,[r0]
0x3393ed8a:ldr r0,[r4,r0]
0x3393ed8c:blx 0x33aaf1c0;符号存根: - [NSUUID copyWithZone:]
0x3393ed90:movw r0,#52700
0x3393ed94:movt r0,#1571
0x3393ed98:添加r0,pc
0x3393ed9a:ldr r1,[r0]
0x23ac72:mov r0,r5
0x23ac74:str.w r8,[sp]
0x23ac78:blx 0x2c7d04;符号存根:objc_msgSend
0x23ac7c:b 0x23aca4; - [BMKUserLocationInternal updateLocationInfo]
+ + 912 at BMKUserLocationInternal.mm:131
0x23ac7e:bl 0x1cbcd8; bmengine :: GetGlobalMan()at IphoneBaiduMaps.mm:61
0x33941b7e:mov r0,r11
0x33941b80:mov r1,r8
0x33941b82:mov r2,r10
0x33941b84:blx 0x33aace80;符号存根:CFDictionarySetValue $ shim
0x33941b88:movw r0,#36884
0x33941b8c:movt r0,#1571
0x33941b90:添加r0,pc
0x33941b92:ldr r4,[r0]
0x33941b94:mov r0,r11
0x23acd6:movs r3,#1
0x23acd8:str r3,[sp]
0x23acda:movs r3,#0
0x23acdc:blx 0x2c7d04;符号存根:objc_msgSend
0x23ace0:添加sp,#4
0x23ace2:pop {r7,pc}
0x35bee92e:ldr r1,[sp,#224]
0x35bee930:ldr r2,[sp,#136]
0x35bee932:ldr r3,[sp,#232]
0x35bee934:blx 0x35c268e4;符号存根:
CLLocationDictionaryUtilitiesGetTransitionInterval
0x35bee938:movw r0,#1732
0x35bee93c:movt r0,#1078
0x35bee940:添加r0,pc
0x35bee942:ldr r1,[r0]
崩溃线程消息并不总是相同的 但在控制台输出中,它总是说 malloc: * mmap(size = 1048576)失败(错误代码= 12) 错误:无法安全地分配区域 * *在malloc_error_break中设置断点以进行调试
我对这个bug感到困惑了好几天,有什么想法吗?谢谢!