0

当我使用 Instruments“分析”我的应用程序时,发现了一些内存泄漏。有些泄漏很明显且易于修复,但有些则不然。Instruments 中显示的一些泄漏日志真的很困扰我。例如: 在此处输入图像描述

我什至无法分辨我的代码中哪一行在幕后称这些“陌生人”。我该如何解决这些泄漏?这是我的代码泄漏吗?从框架?还是只是虚假报告?

然后我的问题是:

A:是否可以修复所有内存泄漏错误?其中一些真的很难对付。而且您甚至无法判断它是来自您的代码还是来自框架工作。

B:有必要修复所有的内存泄漏吗?几个字节泄漏可能不会影响任何事情。你为修复它付出的努力可能比你得到的要多得多。

4

3 回答 3

4

是的,这是可能的,是的,你应该这样做。

从长远来看,泄漏并不好,特别是如果您的应用程序在后台运行。如果泄漏在第三方库中,请告诉制造商修复它。或者,如果您有代码自行修复。泄露你自己的代码很容易被修复,所以去做吧。

于 2012-06-21T08:14:23.387 回答
4

A:是否可以修复所有内存泄漏错误?其中一些真的很难对付。而且您甚至无法判断它是来自您的代码还是来自框架工作。

是的,这是可能的,但请注意,有时您从分析中获得的结果不一定会导致您泄漏,有时它们是尚未自动释放的对象,有时它们不是您的。

B:有必要修复所有的内存泄漏吗?几个字节泄漏可能不会影响任何事情。你为修复它付出的努力可能比你得到的要多得多。

如果您的意思是让您的申请不被拒绝,那么没有必要,不要过度劳累并强调一些您似乎无法找到的字节,不要去寻找已经丢失的几个字节,开始仅当您注意到您的应用程序确实在泄漏时才寻找泄漏。

于 2012-06-21T08:15:06.897 回答
0

如果您的应用程序运行了很长时间(考虑作为某个服务器),那么它会经常导致 2 个字节的泄漏。在某个时间点,您的堆将充满无限泄漏。这可能会导致您的应用程序中的 malloc 失败。因此修复内存泄漏对于长时间运行的应用程序更为重要。而且还有可能修复所有的内存泄漏。

如果一个应用程序运行时间很短,意味着一旦应用程序存在,所有资源都会被操作系统释放,此时泄露的内存也会被释放。

于 2012-06-21T11:50:27.043 回答