处理图像时避免多个LOH分段/碎片

时间:2019-04-14 15:18:19

标签: c# .net garbage-collection buffer

我正在编写图像处理应用程序。该算法是这样的: 首先,我从本地缓存或Internet加载了一组背景图像(每个图像约1.5 Mb)。 然后我下载多个前景图像(每个约1Mb),并在每个bg图像上按比例缩放它们。

在处理所有前景图像时,我会加载所有bg图像并将其保存在内存中(它们全部进入LOH)。

代码在多个线程中运行,目前,我仅使用字节数组来存储图像,并且仅在使用绘制方法时才将它们隐藏到位图中。

问题是创建了多个LOH段来存储大字节数组。它们占用大量内存,处理完成后,GC似乎没有收集到内存。当新请求到达时,另一组bg图像会加载到内存(LOH)中,依此类推。

我考虑过合并数组,但我认为它不适用于我的应用程序。

所以我的问题是如何管理大图像/字节数组并避免LOH碎片化?

0 个答案:

没有答案