Объем памяти процесса CW UWP постоянно увеличивается при использовании BitmapEncoder для кодирования массива byte [] изображения в InMemoryRandomAccessStream - PullRequest
0 голосов
/ 09 января 2019

Этот раздел моего кода ниже приводит к увеличению объема памяти процесса (отображается средствами диагностики) более чем на 20 МБ каждые 10 секунд.

Если я закомментирую это, память процесса не увеличится.

Код кодирует изображение в массиве байтов [] prebuffer_to_IOS в InMemoryRandomAccessStream encoded_output_stream.

Есть ли ошибка в коде, или это проблема сбора мусора?

using (InMemoryRandomAccessStream encoded_output_stream = new InMemoryRandomAccessStream())
{
    encoded_output_stream.Seek(0);

    // Convert 
    // Init BitmapEncoder for output stream and PNG encoding method:
    BitmapEncoder PNG_image_encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, encoded_output_stream);

    PNG_image_encoder.SetSoftwareBitmap( latest_frame_SoftwareBitmap );

    PNG_image_encoder.SetPixelData(
            BitmapPixelFormat.Bgra8,
            BitmapAlphaMode.Ignore,
            (uint)latest_frame_SoftwareBitmap.PixelWidth,
            (uint)latest_frame_SoftwareBitmap.PixelHeight,
            dpiX: 96,
            dpiY: 96,
            pixels: Frames_To_iPad.prebuffer_to_IOS ); // INPUT TO ENCODE IS: prebuffer_to_IOS

    await PNG_image_encoder.FlushAsync();

    // Convert encoded stream to byte array for upload:
    uint compressed_frame_size_bytes = (uint)encoded_output_stream.Size;
}
...