2011-04-25 68 views
0

我正在为Mac编写一个Cocoa程序,它包含一个图片浏览器。 图片浏览器的工作是从网上下载图片并显示它。每次我点击一个可以给它一个图片URL的按钮,它都会这样做。所以这会很频繁。可可应用程序的奇怪内存问题

我的设计目标是,每当我切换到另一张图片或暂时关闭它(它不是主窗口)后,它都会释放它所需的内存。例如,在我打开图片浏览器之前,我的应用程序需要1M内存。打开图片后,需要大约2M内存。关闭它后,它会将内存使用量降低到原来的1M。

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

这很奇怪,这可能是肯定的可可内存缓存策略吗?任何建议,将不胜感激。提前致谢!

更新:今天我添加一个scrollView作为imageView的包装,这个奇怪的内存问题似乎几乎是固定的。

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

+0

发布问题所在的代码。 – edc1591 2011-04-25 23:48:33

回答

1

没有看到代码,很难分辨出问题所在。但直到我看到代码,我会给你几个处理这个问题的指针:

  • 启用垃圾收集。如果你已经拥有了它启用,请尝试强制垃圾收集释放的图像文件这样的后:

    [[NSGarbageCollector defaultCollector] collectIfNeeded];

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

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

+0

可以请你回答我的这个问题http://stackoverflow.com/questions/5790008/audio-recorded-is-echoing-in-mac-app-using-apple-sample – Swastik 2011-04-27 03:49:36

+0

@Swastik,我不熟悉东西,对不起。 – edc1591 2011-04-27 12:08:06

+0

无论如何回复back.Nic我很好我自己解决了我的问题。我看到你的mac回答很多,为什么我特意问你 – Swastik 2011-04-27 12:10:19