2
我正在尋找一種處理許多圖像的方法,但不會耗盡內存。當我的應用第一次運行時,它必須創建一些縮略圖並將它們存儲在本地。這隻發生一次。Monotouch:操縱許多圖像 - 內存不足
雖然我的內存不足錯誤。
大致我會這樣:
[Loop BigPaths]
sourceImg = UIImage.FromFile (nextBigpath);
img = UIImageTools.MakeSquare (sourceImg, 50,3);
img.AsJPEG().Save (path, NSDataWritingOptions.Atomic, out err);
sourceImg.Dispose();
sourceImg = null;
img.Dispose();
img = null;
[end loop]
UPDATE:
爲了解決這個問題,我現在每10個項目後,調用GC.Collect的(),在一個線程等待50毫秒。睡覺()。
我也做了sourceImg
img
外循環定義。
有了這2個變化,我不再會收到內存錯誤。
這不應該發生,因爲你手動處理UIImage。但也許代碼的其他部分不會處理他們的資源?例如圖像處理代碼是否分配?如果我們可以看到有問題的代碼並在循環中運行它來複制'OutOfMemoryException',那將會容易得多。 – poupou
你可以在GetImage中顯示代碼嗎?有一些加載圖像的方法可以讓它們永久保存(UIImage.FromBundle)。 –
我用我的修復程序更新了代碼。我不完全理解它爲什麼有效,但它確實如此。也許每10個圖像使用GC.Collect()並使用Thread.Sleep()有幫助? –