Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

23.01.2012, 10:52

C# catch out of mem exception

Hallo.

Ich hab mich gefragt wie ich eigentlich mit der situation umgehen soll, wenn ich eine out of memory exception bekomme?
Kann ich die ganz normal abfangen und das programm weiter ausführen?

Oder schmiert mir dann das programm ab weil schon für alles zu spät ist. Oder soll ich dann gc.collect() oder was auch immer anstoßen?

wie ist es denn am sinnvollsten mit der situation umzugehen?

lg

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

23.01.2012, 11:01

Am sinnvollsten umzugehen... Ressourcen-sparender programmieren ;) Ich glaub' was anderes ist eh nicht mehr möglich, wenn diese Exception fliegt. Eventuell kann man irgendwas freigeben und es nochmal probieren, das wird in den meisten Fällen aber nur schlecht bis gar nicht gehen, man kann ja nicht an jeder möglichen Stelle so einen Fallback einbauen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

3

23.01.2012, 11:31

Das hab ich befürchtet. Wäre es eine möglichkeit die arbeit, bei der die OOM exc auftreten kann in einen eigenen thread zu stecken, damit ich dann nur diesen thread kille oder hat das keinen sinn weils ja doch der selbe prozess ist?

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

4

23.01.2012, 11:33

Also, bei Java war es meine ich so, dass zuerst eh schon ein Lauf vom Garbage Collector läuft und man die OOM-Exception erst bekommt, wenn das nicht geholfen hat. Ich denke, das dürfte bei .NET ähnlich sein! ;)
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

5

23.01.2012, 11:56

Das hab ich befürchtet. Wäre es eine möglichkeit die arbeit, bei der die OOM exc auftreten kann in einen eigenen thread zu stecken, damit ich dann nur diesen thread kille oder hat das keinen sinn weils ja doch der selbe prozess ist?
Du könntest sie in eine eigene AppDomain stecken - dann kannst du solche Probleme gut abfangen. Dann schmiert nur deine AppDomain ab, nicht der ganze Prozess!

6

23.01.2012, 12:18

mh, ok dann werd ich mir da mal mit einer eigenen AppDomain anschaun. Danke für eure Hilfe!

lg

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

23.01.2012, 12:19

Kommt drauf an, wobei die auftritt. Wenn die in Deiner Main-App auftritt, dann würde ich da nicht dran rumpfuschen, sondern die Ursache beheben. Wenn sie in einem Plugin oder sowas auftritt, dann wäre es natürlich besser, wenn nur das Plugin abschmiert und nicht die ganze Anwendung.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

8

23.01.2012, 12:23

Zum Analysieren kann es aber schon hilfreich sein - auch in der MainApp. Je nachdem, wie schwierig das ganze versteckt ist. Ansonsten stimme ich dir voll zu!

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

23.01.2012, 12:34

Eventuell könnte das hilfreich sein:
http://msdn.microsoft.com/en-us/library/…yfailpoint.aspx
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

10

23.01.2012, 19:35

Bekommt man dann nicht mal mehr den Stacktrace irgendwie raus?!
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

Werbeanzeige