Использование памяти увеличивается, пока не достигнет System.OutOfMemory
исключение.Число экземпляров MemoryStream также увеличивается до исключения.Я пытался использовать using()
, делать ms.Dispose (), ms.Close (), несколько других, GC.Collect () и т. Д. Возможно, это утечка памяти?
while(running){
var screen = Screen.PrimaryScreen;
using(Bitmap bitmap = new Bitmap(screen.Bounds.Width, screen.Bounds.Height)) {
using(var g = Graphics.FromImage(bitmap)) {
g.CopyFromScreen(screen.Bounds.Left, screen.Bounds.Top, 0, 0, screen.Bounds.Size);
}
using(EncoderParameters encoderParams = new EncoderParameters(1)) {
encoderParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, ssQuality);
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
ImageCodecInfo jgpEncoder = codecs[1];
using(var ms = new MemoryStream()) {
bitmap.Save(ms, jgpEncoder, encoderParams);
image img2 = new image();
img2.Img = Image.FromStream(ms);
binF.Serialize(client.GetStream(), img2);
}
}
}
}
VS Просмотр памяти:
![Memory View VS](https://i.stack.imgur.com/2Wfek.png)
Использование памяти диспетчером задач для процесса:
![Task Manager memory usage of the process](https://i.stack.imgur.com/J1Zws.png)