我正在寻找一种处理许多图像的方法,但不会耗尽内存。当我的应用程序第一次运行时,它必须创建许多缩略图并在本地存储它们。这只发生一次。
虽然我的内存错误。
我大概是这样的:
[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]
更新:
要修复它,我现在每10个项目后调用GC.Collect(),在Thread.Sleep()中等待50毫秒。
我还在循环外定义了sourceImg
img
。
通过这两项更改,我不再遇到内存错误。
答案 0 :(得分:1)
这是我发现的解决方案。
在循环外创建图像变量并重复使用它们,确保在每次使用后调用.Dispose()。
50个图像后调用GC.Collect()然后调用Thread.Sleep(50)以给GC清理时间。
之后没有内存问题。