【问题标题】:Is there a way to handle memory crash in ios有没有办法处理ios中的内存崩溃
【发布时间】:2012-09-26 06:52:25
【问题描述】:

我已经在我的 AppDelegate 中处理了 -(void) handleMemoryWarning:(NSNotification*)notification 函数,它做得很好。

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

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

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

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

请不要在现有代码中提供减少内存的方法。

【问题讨论】:

    标签: ios memory-leaks cocos2d-iphone


    【解决方案1】:

    用户清除内存

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

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

    【讨论】:

    • 哦!我的意思是我已经处理了 applicationDidReceiveMemoryWarning 函数。但这会在每次内存警告时触发。我想知道是否有一种方法可以处理来自内存泄漏的崩溃。我只想在崩溃即将发生而不是在每次内存警告时向我的服务器发送一些消息。
    【解决方案2】:

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

    [[CCTextureCache sharedTextureCache] dumpCachedTextureInfo];
    

    它将打印到控制台所有加载的纹理及其在内存中的大小。为避免所有设备上的内存崩溃,您的应用程序不应使用超过 100 Mb 的内存(我指的是 Retina 设备)。即使这样的数量也会导致内存警告,但不会崩溃。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      • 2013-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多