OutOfMemoryException dla aplikacji vb.net
W jednej z moich aplikacji VB.Net pojawia się błąd podczas uruchamiania aplikacji. Ten błąd nie zawsze przychodzi. Nie jestem w stanie również odtworzyć błędu. Brak dokładnej sekwencji, aby odtworzyć błąd.
Stack: System.OutOfMemoryException: Brak pamięci. at System.Drawing.Graphics.FromHdcInternal (IntPtr hdc) w System.Windows.Forms.ToolStrip.OnPaint (PaintEventArgs e) w System.Windows.Forms.Control.PaintWithErrorHandling (PaintEventArgs e, warstwa Int16, Boolean disposeEventArgs) w System.Windows .Forms.Control.WmPaint (Message & m) w System.Windows.Forms.Control.WndProc (Message & m) w System.Windows.Forms.ScrollableControl.WndProc (Message & m) w System.Windows.Forms.ToolStrip.WndProc (Message & m) w System.Windows.Forms.StatusStrip.WndProc (Message & m) w System.Windows.Forms.Control.ControlNativeWindow.OnMessage (Message & m) w System.Windows.Forms.Control.ControlNativeWindow.WndProc (Message & m) w System .Windows.Forms.NativeWindow.Callback (IntPtr hWnd, msg Int32, IntPtr wparam, IntPtr lparam)
Opis błędu:
MyApplication_UnhandledException
Po tym błędzie otrzymuję wiadomość z informacją:
Za mało pamięci do utworzenia mapy bitowej. Zamknij jedną lub więcej aplikacji do zwiększenia.
Kiedy sprawdziłem wykorzystanie pamięci przez aplikację, nie było to tak wysokie. Ten błąd nie pojawia się wielokrotnie. Więc jak mogę rozwiązać ten błąd. Jak można to rozwiązać? Sprawdziłem działanie mojej aplikacji za pomocą profilera pamięci .Net i profilera pamięci redgate.
Poniżej znajduje się zrzut ekranu z ilością użycia pamięci niezarządzanej. Nie wiem właściwie, czy te wartości są wysokie.
AKTUALIZACJA:
dostałem błąd ponownie. sprawdziłem obiekty gdi i było 9998. Więc błąd był spowodowany wysokimi obiektami gdi.Teraz pytanie jest jak rozwiązać.Następnie użyłemGDIView i sprawdziłem. Dzięki temu narzędziu dostałem pióro-2954 pędzel-5918 czcionkę-90 bitmapę-13 itd. GDI łącznie-9998 Co to za pióro i pędzel? W moim kodzie nie używam pędzla ani pióra. (Przeszukałem kod w poszukiwaniu „pióra” i „pędzla”, ale nic nie dostałem.) Więc pomóż mi w tym