有没有办法处理ios中的内存崩溃

时间:2012-10-05 06:33:03

标签: ios memory-leaks cocos2d-iphone

我已经在我的AppDelegate中处理了函数-(void) handleMemoryWarning:(NSNotification*)通知,并且它做得非常好。

我花了很多时间来处理程序中的每个内存泄漏。

但有些我在收到内存警告级别2或有时3后仍然看到内存泄漏并最终导致内存崩溃。

有没有一种方法可以收集一些数据并在我的应用程序崩溃之前将其发送到我的服务器因为记忆?

我正在使用Crittercism来处理其他异常。

请不要给出减少现有代码内存的方法。

2 个答案:

答案 0 :(得分:1)

用户可以清除内存

[[CCDirector sharedDirector] purgeCachedData];
[[CCTextureCache sharedTextureCache] removeAllTextures];
[CCTextureCache purgeSharedTextureCache];
[[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFrames];
[CCSpriteFrameCache purgeSharedSpriteFrameCache];

并在

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
  //you just save your data.
}

答案 1 :(得分:0)

要检查加载的纹理,您可以调用

[[CCTextureCache sharedTextureCache] dumpCachedTextureInfo];

它将打印以控制所有加载的纹理及其在内存中的大小。为避免所有设备上的内存崩溃,您的应用程序不应使用超过100 Mb的内存(我的意思是视网膜设备)。即使这样的数量也会引起记忆警告,但不会发生崩溃。

要检查应用开始加载资源的位置,您可以使用乐器中的活动监视器。它允许您查看应用程序使用的内存量。附加的仪器将导致已用内存的增加,但如果您的应用程序在附加活动监视器时崩溃,并且没有它就不会崩溃,这意味着您的内存使用率很关键,必须减少。