繁体   English   中英

可可记忆使用率

[英]Cocoa Memory Usage

我试图在我的Cocoa桌面应用程序中跟踪一些特殊的内存行为。 我的应用程序使用NSImage进行了大量图像处理,然后使用NSURLConnection通过HTTP将这些图像上传到网站。

上传几百张图片(有些非常大)后,当我运行Instrument时,没有泄漏。 我还通过MallocDebug运行,没有泄漏。 当我使用工具深入研究对象分配时,会得到如下输出:

GeneralBlock-9437184, Net Bytes 9437184, # Net 1
GeneralBlock-192512, Net Bytes 2695168, # Net 14

等,用于较小的尺寸。 当我详细查看它们时,它们被标记为“ Foundation”所有,并通过NSConcreteMutableData initWithCapacity创建。 在HTTP上传期间,我正在使用NSMutableData创建一个帖子正文,因此我猜这些是Cocoa在创建NSMutableData对象时为我缓存的缓冲区。

有办法强迫可可释放这些吗? 我90%的肯定是我发布的正确(并且Instruments和MallocDebug似乎证实了这一点),但是我认为出于性能方面的考虑,由于我分配了许多MSMutableData缓冲区,因此Cocoa保留了这些建议。

如果确定要正确释放自己拥有的对象,那么实际上您无能为力。 正如Instruments所说,这些块归Foundation所有,因为Foundation对象NSConcreteMutableData创建了它们。 这些可能是NSData故意保留的某种高速缓存,但无法知道它们是什么。

如果您认为这是一个错误,则应在http://bugreport.apple.com上报告该错误。 内存所有权规则也适用于不能很好地管理内存的类。

另外,这可能是一个愚蠢的问题,但是您为Object Alloc工具使用哪个选项? 所有创建或创建的对象仍然存在吗? 您可能正在查看不再重要的分配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM