iPhone内存WEIRD崩溃

时间:2009-03-18 14:55:37

标签: iphone objective-c out-of-memory

我的应用程序在大约20分钟后崩溃,状态为101(内存不足,我相信)

使用Instruments进行调试 - ObjectAlloc和Leaks没有给我任何线索。 ObjectAlloc图保持在大约1百万字节(1MB)的漂亮恒定级别,Net的分配也是如此。我已经摆脱了所有泄漏。

我认为它可能与线程数有关,但在ObjectAlloc中绘制这些线程也表明它们是常量。

有人能指出我的另一种工具或另一种调查途径吗?

5 个答案:

答案 0 :(得分:3)

修复Clang发现的所有内容。 LLVM Clang Static Analysis

答案 1 :(得分:1)

请记住,系统分配的对象(包括图像和声音等内容)不会在乐器中进行跟踪(当然,最高级别保留计数)。因此,加载图像是可行的,比如说,这对你的内存使用量没有多大贡献,但是可以耗尽大量的实际内存!

如果没有任何和弦,你可以试试减法调试方法 - (拿一个你的项目的副本)剪掉一大堆功能,直到问题消失或你得到最小的再现它的东西。这应该至少可以帮助您找到瓶颈所在。不可否认,这很难(a)因为你每次测试都需要等待20分钟左右(但如果你把它作为后台程序就不会那么糟糕)和(b)因为记忆问题的本质就是那里可能不是单一原因,而是一小部分原因。

祝你好运!

答案 2 :(得分:1)

我使用Object Alloc的经历并不是那么棒。它并不总能为您提供应用程序使用的实际内存。

相反,请将Object Alloc与Activity Monitor一起使用。确保使用活动监视器中的“物理内存空闲”和“使用的物理内存”选项。这将告诉您应用程序正在使用多少内存。

答案 3 :(得分:0)

“好的水平”是什么意思?它根本不会随着时间而上升?总共多少内存 - 可能只是手机需要一些内存用于其他应用程序而你的内存有点太大而无法熬夜。

答案 4 :(得分:0)

错误代码101表示iPhone OS强制退出您的应用。如果您在应用程序中使用UIImageViews,请务必管理它们的内存。我发现,一旦我的应用程序超过10/12 MB,iPhone就会终止它。

如果您没有使用任何图片视图(或大图片),那么您的后端代码会占用太多空间。

我只能说,你需要更仔细地查看你的分配,并在任何时候管理你在记忆中保留的观点。

在Instruments中运行您的应用程序(运行 - >使用Performamce Tool启动 - > Leaks)以查看内存的分配位置。

希望这有帮助!