2011-07-12 56 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

使用字典緩存許多圖標,我現在需要的。 –