我正在为Mac编写一个Cocoa程序,它包括一个图片浏览器。 图片浏览者的工作是从网上下载图片并进行显示。每次我点击一个给它提供图片网址的按钮时,它都会这样做。所以这会很频繁。
我的设计目标是,每当我换到另一张图片或临时关闭它(它不是主窗口)之后,它将释放所需的内存。例如,在我打开图片的图片查看器之前,我的应用程序需要1M内存。打开图片后,需要2M内存。在我关闭它之后,它会将内存使用量减少到最初的1M。
问题是,有时在我查看图片后,尤其是大图片时,观看者不会给出所有内存,例如,打开它需要花费大约20M内存,但是在关闭之后,只有10个20日发布,另外10名仍在那里,永远不会被释放。它看起来像内存泄漏,但我检查了我的代码并分析了很多次,我找不到任何内存泄漏,而且,其他一些图片也不会像这样。
这很奇怪,这可能是某些Cocoa内部内存缓存策略吗?任何建议,将不胜感激。提前谢谢!
更新:今天我添加了一个scrollView作为imageView的包装后,这个奇怪的内存问题似乎已经解决了。
感谢您的建议,edc1591,我将继续弄清楚发生了什么。
答案 0 :(得分:1)
如果没有看到代码,很难说清楚问题是什么。但在我看到代码之前,我会给你几个指针来解决这个问题:
启用垃圾收集。如果您已经启用它,请在释放图像文件后尝试强制进行垃圾回收:
[[NSGarbageCollector defaultCollector] collectIfNeeded];
尝试快照分析。 Here's一个很好的教程。
代码发布后,我会更新此答案。