Memory leaks Image.FromStream单声道内存泄漏

Memory leaks Image.FromStream单声道内存泄漏,memory-leaks,mono,Memory Leaks,Mono,我相信我在Mono 4.6和4.8中使用Image.FromStream调用时偶然发现了内存泄漏。下面是一段代码片段,可用于重现问题。我已经在Ubuntu16.04LTS和Mono4.6和4.8上测试过了 我在这里发布了一个Visual Studio/MonoDevelop解决方案和项目(在tar.gz文件中):。提取BitmapTest.gz后,将BitmapTest重命名为BitmapTest.tar.gz,以便可以提取代码 此项目是一个简单的Winforms应用程序,运行以下代码 有没有工

我相信我在Mono 4.6和4.8中使用Image.FromStream调用时偶然发现了内存泄漏。下面是一段代码片段,可用于重现问题。我已经在Ubuntu16.04LTS和Mono4.6和4.8上测试过了

我在这里发布了一个Visual Studio/MonoDevelop解决方案和项目(在tar.gz文件中):。提取BitmapTest.gz后,将BitmapTest重命名为BitmapTest.tar.gz,以便可以提取代码

此项目是一个简单的Winforms应用程序,运行以下代码

有没有工作机会,或者我没有考虑的事情

编辑: 如果我使用

using (Bitmap srcBitmap = (Bitmap)Image.FromFile(_file_name))
而不是

using (Bitmap srcBitmap = (Bitmap)Image.FromStream(ms))
它起作用了。问题似乎出在Image.FromStream中

// populate our byte[] array with a .BMP file
ImageConverter convert = new ImageConverter();
private byte[] _sourceArray = (byte[])convert.ConvertTo(Image.FromFile(filename_string), typeof(byte[]));

// put the following code in a loop
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(_sourceArray))
{
     System.Diagnostics.Trace.WriteLine("First memory stream created OK size: " + ms.Capacity.ToString());
     using (Bitmap srcBitmap = (Bitmap)Image.FromStream(ms))
     {
          System.Diagnostics.Trace.WriteLine("First Bitmap created OK size: " + srcBitmap.Size.ToString());
     }
}

// If GC is called then the memory climbs slower
if (_forceGC) {
     GC.WaitForPendingFinalizers();
     GC.Collect();
}

如果这是可重复的,请考虑在我提交的bug报告错误报告: