Я получаю очень случайный сбой со следующей трассировкой:
System.OutOfMemoryException: Out of memory.
at System.Drawing.Graphics.FromHdcInternal(IntPtr hdc)
at System.Windows.Forms.PaintEventArgs.get_Graphics()
at System.Windows.Forms.Control.PaintBackColor(PaintEventArgs e, Rectangle rectangle, Color backColor)
at System.Windows.Forms.Control.PaintBackground(PaintEventArgs e, Rectangle rectangle, Color backColor, Point scrollOffset)
at System.Windows.Forms.Control.PaintBackground(PaintEventArgs e, Rectangle rectangle)
at System.Windows.Forms.Control.OnPaintBackground(PaintEventArgs pevent)
at System.Windows.Forms.ScrollableControl.OnPaintBackground(PaintEventArgs e)
at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer, Boolean disposeEventArgs)
at System.Windows.Forms.Control.WmEraseBkgnd(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ContainerControl.WndProc(Message& m)
at System.Windows.Forms.UserControl.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Как вы можете видеть, нет ни одного моего кода в след, поэтому мне очень трудно найти причину. Поиск в Google кажется неубедительным, но обычно указывает на утечку дескриптора сборщика мусора, но после последнего сбоя мое использование памяти было:
Handle count:16,283,
Private Bytes:995,440K,
Virtual Bytes:1,628,208K,
Working Set:866,892K,
GC Heap Size:158,841K,
GDI Objects:402,
User Objects:1,607
Что не кажется необычным. Также регулярно пользуюсь. каким должен быть следующий курс действий? У меня установлен Process Explorer, и мне удалось получить полный дамп памяти после одного из сбоев, но на самом деле у меня нет опыта в использовании того и другого для диагностики такого рода проблемы (до сих пор было достаточно профилировщика памяти .net)