应用程序接收内存不足警告,但只有5.7MB的实时字节

时间:2013-11-05 02:19:11

标签: ios iphone xcode memory-management instruments

我的应用程序一直收到低内存警告,重复操作并最终崩溃。当我在乐器中进行分析时,我只看到崩溃时5.7 MB的活字节。 (崩溃显示没有回溯,没有错误等等。它只是终止,这表示内存崩溃。)

为什么我的应用程序因内存占用率低而崩溃?我一直在iPad 1上测试iOS 5.1。

Instruments screenshot

修改
我能够解决崩溃问题。这是因为对一个具有3 UIImages属性的对象进行了额外的保留调用。这些对象的累积导致内存警告和崩溃。

然而,问题仍然存在:为什么仪器显示只有5.7MB的实时字节?这可能是UIImage's自动缓存吗?

2 个答案:

答案 0 :(得分:0)

我看不到您发布的代码中有任何明显的泄漏,但如果您只是想重绘图像(可能是为了强制立即解压缩),那么这是一种非常复杂的方法。就这样做:

- (void)loadImage:(UIImage *)image
{
    UIGraphicsBeginImageContextWithOptions(image.size, image.scale);
    [image drawAtPoint:CGPointZero];
    self.someImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
}

希望这能解决您所看到的任何泄漏。

答案 1 :(得分:0)

您是否在环境变量中将NSZombieEnabled设置为YES?

当启用僵尸时,内存永远不会被释放,但会保留在僵尸池中以调试对无效指针的引用。