可可应用的奇怪记忆问题

时间:2011-04-25 14:32:05

标签: cocoa macos memory nsimage

我正在为Mac编写一个Cocoa程序,它包括一个图片浏览器。 图片浏览者的工作是从网上下载图片并进行显示。每次我点击一个给它提供图片网址的按钮时,它都会这样做。所以这会很频繁。

我的设计目标是,每当我换到另一张图片或临时关闭它(它不是主窗口)之后,它将释放所需的内存。例如,在我打开图片的图片查看器之前,我的应用程序需要1M内存。打开图片后,需要2M内存。在我关闭它之后,它会将内存使用量减少到最初的1M。

问题是,有时在我查看图片后,尤其是大图片时,观看者不会给出所有内存,例如,打开它需要花费大约20M内存,但是在关闭之后,只有10个20日发布,另外10名仍在那里,永远不会被释放。它看起来像内存泄漏,但我检查了我的代码并分析了很多次,我找不到任何内存泄漏,而且,其他一些图片也不会像这样。

这很奇怪,这可能是某些Cocoa内部内存缓存策略吗?任何建议,将不胜感激。提前谢谢!

更新:今天我添加了一个scrollView作为imageView的包装后,这个奇怪的内存问题似乎已经解决了。

感谢您的建议,edc1591,我将继续弄清楚发生了什么。

1 个答案:

答案 0 :(得分:1)

如果没有看到代码,很难说清楚问题是什么。但在我看到代码之前,我会给你几个指针来解决这个问题:

  • 启用垃圾收集。如果您已经启用它,请在释放图像文件后尝试强制进行垃圾回收:

    [[NSGarbageCollector defaultCollector] collectIfNeeded];

  • 尝试快照分析。 Here's一个很好的教程。

代码发布后,我会更新此答案。

相关问题