Я пишу приложение для обработки изображений.Алгоритм выглядит следующим образом: во-первых, я загружаю набор фоновых изображений (~ 1,5 МБ каждое) либо из локального кэша, либо из Интернета.Затем я загружаю несколько изображений переднего плана (~ 1 МБ каждое), масштабирую их для каждого изображения bg.
Я загружаю все изображения bg и сохраняю их в памяти (все они переходят в LOH), пока все изображения переднего плана обрабатываются.обработано.
Код выполняется в нескольких потоках, и в настоящее время я использую байтовые массивы для хранения изображений и преобразования их в растровые изображения только при использовании методов рисования.
Дело в том, что существует несколько LOHсегменты, созданные для хранения больших байтовых массивов.Они занимают довольно много памяти, и GC, похоже, не собирает ее после завершения обработки.Когда приходит новый запрос, другой набор изображений bg загружается в память (LOH) и т. Д.
Я думал о пуле массивов, но я думаю, что это неприменимо в моем приложении.
Таким образом, мой вопрос заключается в том, как управлять большими изображениями / байтовым массивом и избежать фрагментации LOH?