在我正在开发的mac应用程序中,我有iKImageBrowserView
,显示的内容类似于500/1000图像。
关闭图像显示,内存消耗非常低,约为50 MB 打开图像显示,内存消耗非常高,约为500 MB 每次向上/向下滚动时,内存使用量都会增加。
以下是imageBrowser:itemAtIndex
:
..
MyBrowserNSImageItem *item = [[MyBrowserNSImageItem alloc] initWithCover:coverImage andId:myFile];
return [item autorelease];
其中coverImage
从对象缓存中读取,并且每次都不会初始化。
如何减少内存使用量?
更新:我尝试使用imageVersion
:来自DataSourceProtocol,但内存使用率仍然很高。如果我初始化图像但没有将它们传递给ikImageBrowserView内存很低。
其他更新:我做了另一项测试。每次我分配一个简单的PNG图像的对象。而这次记忆力很低。只有在使用真实图像时才会出现问题。它们是约50 / 100KB的JPG。可能当它们被加载到内存中时,它们会解压缩。如何减少NSImage的内存使用量?
更新:问题在于JPEG的质量。它们在显示时会消耗太多内存。所以问题是:如何在Cocoa中生成内存/质量缩略图?
答案 0 :(得分:2)
为了分享我未来读者的经验,我发现了自己的问题。我的代码中存在内存泄漏。在我的自定义ImageBrowserItem中,泄漏非常简单。
作为另一个优化,我从NSImage切换到NSData表示(它消耗更少的内存)。
作为最后一个优化(我将要考虑)是关于缩略图的质量。我想根据缩放值显示不同的拇指质量。你觉得怎么样?