2011-07-12 23 views
2
NSImage *randomImage = [[NSImage alloc] initWithContentsOfURL:imageURL]; 
[randomImage release]; 

为什么内存使用率仍然上升?什么是使用该内存?我释放NSImage对象。 (不,它不是URL)NSImage +内存管理

+0

其他东西必须消耗内存 – 2011-07-12 14:56:58

+0

这样做500次与4kb图像会给我50MB + RAM额外使用 –

+0

@Vince是啊我知道,但是什么?我写了一个测试应用程序来做到这一点,其NSImage出于某种原因 –

回答

2

这些图像可能被缓存。看看[img setCacheMode:]

你真的尝试做500次或者是你的行为猜测?我的猜测是,缓存将被清除一些上限 - 也许50MB不是那么多?

重要的是要注意的是-release不等同于free()destroy(),即使你alloc init后立即调用它,你不应该让该对象已被清除掉的假设。这就是为什么对-retainCount滥用者非常讨厌,认为这是一种调试内存管理的好方法。

+0

没有我真的尝试了500次,甚至给它5分钟,“恢复”其用法。是的,我知道,(释放不等于自由()),但是,这并不意味着它应该继续使用内存 –

+0

我认为这是与文件IO,运行“清洗”后的记忆是罚款,所以内存被清除,系统只是懒得把它清理干净(因而makred免费,在需要的时候free'd),但是,这只是胡乱猜测.. –

+0

使用字典缓存许多图标,我现在需要的。 –