多少内存泄漏(以字节为单位)可能是致命的

Posted

技术标签:

【中文标题】多少内存泄漏(以字节为单位)可能是致命的【英文标题】:How much memory leakage (in bytes) can be fatal 【发布时间】:2012-06-04 11:58:40 【问题描述】:

我刚刚使用 Instruments 记录了我的内存泄漏,我的应用程序泄漏了大约 2-2.5 mb 的内存。我已经开始修复它,但您认为这是大量内存泄漏吗?我个人在使用 Instruments 和测量内存泄漏等领域的经验很少。如果没有,下一次,这将是一个致命的数量。另外,Instruments 会记录每一次内存泄漏吗?如果是这样,那么如果您的泄漏 = 0,那么您的应用程序在技术上是否完美(在内存管理方面)。 编辑: 在我使用内存泄漏记录的 Instruments 中,我测试了我的应用程序的每个部分,这就是我记录 2-2.5 mb 总数的方式。 谢谢!

【问题讨论】:

【参考方案1】:

基本上你会想要摆脱你“拥有”的任何内存,即已经分配给你自己的内存。 如果你使用 alloc/copy/new 那么就是这种情况,你应该释放资源。

例如:

   NSString *doIOwnThisIWonder = [NSString stringWithFormat:@"%@",@"Nope"];
   NSImage *iOwnThisImage = [[NSImage alloc] initWithContentsOfFile:@"/tmp/youownthis.jpg"];
   NSData *perhapsThisData=[iOwnThisImage TIFFRepresentation]; 

'请解除分配图像 mkay :)

我很懒所以这里有一个链接http://interfacelab.com/objective-c-memory-management-for-lazy-people/

【讨论】:

【参考方案2】:

内存泄漏会随着时间的推移而增加,因此每个字节都可能是致命的。唯一的“非致命”泄漏是在过程生命周期内仅发生一次的泄漏。

【讨论】:

嗯好吧...你认为 2-2.5 mb 很多吗?我测试了我的应用程序的每个部分/部分 您在什么时间段内泄漏了这么多内存?十秒?一小时?两周? 我的应用程序不是很大所以大约 5 分钟 如果你在五分钟内泄露了 2 MB,如果有人运行你的程序一两个小时,你认为会发生什么?是的,我认为在一个小型应用程序中白白浪费 2 MB 的内存是很多的。 嗯...好点。谢谢!真的,我只是想了解什么是真正的坏和真正的好......而不是我的应用是什么......

以上是关于多少内存泄漏(以字节为单位)可能是致命的的主要内容,如果未能解决你的问题,请参考以下文章

iPhone应用程序中的MKMapView内存泄漏

Laravel - 在简单的数据库查询内存泄漏/“允许的内存大小为 .. 字节耗尽”之后 [重复]

内存溢出和内存泄漏

内存溢出和内存泄漏

java内存泄漏与处理

如何在 OnDestroy 中删除此 firebase 侦听器以减少内存泄漏?