Out of memory exception - ?

  • VB.NET

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Out of memory exception - ?

    Hallo,

    ich habe es endlich geschafft, mein Programm zum laufen zu bringen, danke der Hilfe des Forums, jetzt habe ich allerdings das Problem, dass nach ca. 10 Minuten der Fehler kommt: "outofmemoryexception"

    Wie löse ich das?
    Sorry, Glaskugel ist beim Optiker, aber StackTrace könnte helfen.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Pass auf das du nicht allzu große Dateien, Arrays order andere Datenansammlungen in deinem Programm zwischenspeicherst.
    Du kannst den Speicherplatz wieder gewinnen wenn du z.B. zBitmap=nothing schreibst. Dadurch gibst du den speicher wieder frei.
    "Das Internet ist nur ein Hype" - Bill Gates

    Xy8000 schrieb:

    wenn du z.B. zBitmap=nothing schreibst. Dadurch gibst du den speicher wieder frei.

    VB.NET-Quellcode

    1. zBitmap.Dispose()
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Xy8000 schrieb:

    Du kannst den Speicherplatz wieder gewinnen wenn du z.B. zBitmap=nothing schreibst. Dadurch gibst du den speicher wieder frei.

    Nö. Dazu muss man die Instanz disposen.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Xy8000 schrieb:

    wäre es gegessen
    Da wird der Finalizer "aktiviert", und der schlägt bei Beendigung des Programms zu. Also in diesem Kontext wirkungslos.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Damit setzt Du nur die Instanz auf Nothing, intern bleiben alle verwendeten Ressourcen aber bestehen, insofern sie nicht der GC holt, bis Du das Programm beendest.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Okay, Danke :D
    Aber jetzt ist das:

    InvalidOperationException wurde nicht behandelt.
    Ungültiger threadübergreifender Vorgang; Der Zugriff auf steuerelement...erfolgte von einem anderen thread...

    Wurde das nicht mit

    Quellcode

    1. Control.CheckForIllegalCrossThreadCalls = False
    gekillt?
    Nein!
    Lösche diese Zeile sofort aus Deinem Programm und verwende sie nie wieder. Damit vertuschst Du einfach nur alle Fehler und es kann zu einem Deadlock kommen.
    Die Lösung heißt Invoken.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Was soll das sein :?:

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Nein...
    de.wikipedia.org/wiki/Stacktrace

    Es geht darum, dass man den der Exception benötigt, um den Fehler zu finden. Lerne zu debuggen.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Kann ich die Fehler Warnung nicht einfach killen? Hat ja sonst auch funktioniert...

    Oder ein einfacher Befehl, der diese Dinge aus dem RAM löscht...

    Control.CheckForIllegalCrossThreadCalls = False - damit geht es, springt aber hoch und runter in arbeitsspeichergröße...
    Nö, Fehler müssen behoben werden.
    Aus dem RAM löschen geht mit Disposen, steht doch oben. Je nachdem, wo IDisposable implementiert wird, muss das gemacht werden.

    Mindstormsnxt schrieb:

    Control.CheckForIllegalCrossThreadCalls = False - damit geht es, springt aber hoch und runter in arbeitsspeichergröße...

    Du bringst hier was durcheinander. Das eine hat mit dem anderen nichts zu tun. Das eine ist Threading, das andere Problem ist wegen nicht freigegebenen Ressourcen.
    Und nochmal: Vergiss diese Zeile, damit geht es nicht, weil sich Dein Programm irgendwann aufhängt und dann kriegst Du keinen Fehler und gar nichts mehr. Es ist dann tot.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Gar nicht. Du musst es nur aufrufen...
    Und ansonsten habe ich doch alles schon geschrieben. :/

    Trade schrieb:

    Die Lösung heißt Invoken.


    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: