曾经在一个实时音视频通话的项目中遇到了内存泄漏问题,导致程序运行一段时间后内存溢出,经过分析代码找到了这个罪魁祸首:Bitmap转BitmapSource未释放内存。
原代码如下:
//显示视频互联画面 void ShowVideoFrame(VideoFrame frame) { try { Stream stream = frame.GetBmpStream(); Bitmap img = new Bitmap(stream); BitmapSource bs = Imaging.CreateBitmapSourceFromHBitmap(img.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); peerPicBox.SetImageSource(bs