Почему изображения оставляют после себя гигантские кучи оперативной памяти?C#

Место общения программистов C#
Ответить
Anonymous
 Почему изображения оставляют после себя гигантские кучи оперативной памяти?

Сообщение Anonymous »

В настоящее время я работаю над программой, которая содержит ImageViewer, который представляет собой отдельное окно, в котором вы можете прокручивать серию изображений.
Моя проблема в том, что даже после закрытия формы и заботы обо всех ссылках на изображения, которые были загружены следующим образом:

Код: Выделить всё

ThingFile? imageFile = await ThingData.LoadFileAsync(Images[Index].ID);
ArgumentNullException.ThrowIfNull(imageFile);

try
{
if (ThingData.VerifyFile(imageFile) && imageFile.Content != null)
{
var imageData = imageFile.Content;

imageFile.Clear();

using var img = new MagickImage(imageData);
if (img.ColorSpace != ColorSpace.sRGB)
{
img.TransformColorSpace(ColorProfile.SRGB);
}

using var ms = new MemoryStream();
img.Write(ms, MagickFormat.Png32);
ms.Position = 0;

using var tempBitmap = new Bitmap(ms);
pictureBox.Image = (Bitmap)tempBitmap.Clone();
imageData = null;
}
else
{
ArgumentNullException.ThrowIfNull(pictureBox.ErrorImage);
pictureBox.Image = (Image)pictureBox.ErrorImage.Clone();
}
}
finally
{
imageFile = null;
}
выделенная оперативная память значительно больше, чем до начала всей процедуры.
Например, было использовано 60 МБ, ImageViewer привык и закрылся, и (даже после вызова GarbageCollector с помощью GC.Collect(); ) объем ОЗУ увеличился до 100 МБ. 40 МБ были не просто не освобождены, а потеряны, так как повторение того же самого привело бы к тому, что объем ОЗУ составил бы 140, затем 180 и так далее...

Подробнее здесь: https://stackoverflow.com/questions/797 ... ehind-them
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»