2010-02-03 81 views
0

我正在测试泄漏的特定用例。有时,我会得到泄漏,而其他时间我也不会经历相同的用例。你能否建议是因为系统框架还是我的代码?间歇性内存泄漏

我已经检查了我的代码和everthing看起来完美没有任何未发布的对象。你能提出一个解决方案吗?

谢谢

+0

没有你的代码,我们不能建议任何东西。 – spender 2010-02-03 09:20:25

回答

1

这是非常不可能的框架。不要忘记,有数百(数千)的开发人员在使用它,所以有人没有发现错误的机会比仅由您自己进行审查的代码更为轻巧。

0

间歇性内存泄漏的最可能来源是自动回复对象。自动释放的对象一直存在,直到它们所属的自动释放池被耗尽。根据内存条件,他们可能看起来像是在一次运行中泄漏,但他们不会在下一次运行。

请参阅Avoiding, finding and removing memory leaks in Cocoa了解如何跟踪内存泄漏。

Edit01:

你可能逃脱它,但我不会推荐它。如果Apple在测试时发生泄漏,您很有可能被拒绝。

作为一个质量问题,它取决于泄漏的程度有多严重,以及在实际使用中他们可以持续多久。每个应用程序可能会在这里和那里泄漏几个字节。 (例如,在某些框架中有已知的泄漏。)如果泄漏非常小,它们不会造成问题,特别是在仅运行很短时间的应用程序中。但是,如果泄漏较大或应用程序设计运行很长时间,则泄漏最终会导致应用程序失效。

例如,假设您有类似天气应用的程序。作为一个质量问题,由于天气应用程序的使用很快,它是否会泄漏一点也不重要。人们打开它,看看天气,然后关闭它。泄漏没有时间积累。另一方面,如果您的应用程序像网络浏览器或电子阅读器等人们长时间处于开放状态,那么泄漏可能会累积并导致应用程序失效。简而言之,像所有其他编程任务一样,追踪泄漏是感知质量与开发之间的折中。花费更多的资源来追踪一个微不足道的常见错误比追踪一个严重但非常罕见的错误更为常见。

我会重申在上面的泄漏内存泄漏检测方法将最终找到泄漏。如果你花时间在上面,你会最终找到它。

+0

然后是那个好,如果我提交给苹果这些类型的泄漏 – Gani 2010-02-05 06:59:59

+0

请参阅编辑的详细回应 – TechZen 2010-02-05 13:13:22