下面我的代码的这一部分会导致进程内存(由诊断工具显示)每10秒增加20MB以上。
如果我将其注释掉,则进程内存不会增加。
代码将byte []数组prebuffer_to_IOS中的图像编码为InMemoryRandomAccessStream encoding_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;
}