_GDIPlus raubt Arbeitsspeicher

  • Hallo

    Ein Programm vonn mir läuft 24 Stunden / 7Tage.
    Nun Habe ich festgestellt, dass es im Arbeitsspeicher immer größer wird.

    Ich habe es auf den Teil mit GDIPlus eingegrenzt.

    Hier habe ich diesen Programmteil zum testen vereinfacht:

    Was übersehe ich da, warum braucht das Programm immer mehr Arbeitsspeicher?

    Ich hoffe, mir kann jemand helfen.
    Ingolf

    Einmal editiert, zuletzt von IcemanSLF (18. Februar 2016 um 09:54)

    • Offizieller Beitrag

    Ich bin nicht der GDIplus-Experte, kann mich aber erinnern, dass es da ein Problem gab - die Ursache ist mir leider entfallen. Aber warte bis die Auskenner sich hier melden.
    Nur eines vorweg:
    _GDIPlus_Startup() und _GDIPlus_Shutdown() haben in der Schleife nichts verloren.
    Startup machst du beim Skriptstart und Shutdown legst du in eine Ende-Funktion, die du mit OnAutoItExitRegister festlegst.

  • Danke @BugFix
    Ich habe es dahingehend mal getestet und es scheint das Problem zu lösen.

    Da ich im richtigen Programm die Funktion nur alle 5 Minuten aufrufe, habe ich das Shutdown immerwieder ausgeführt, das werde ich nun sein lassen:

    Den Befehl OnAutoItExitRegister kannte ich bis jetzt noch nicht, danke.

    Was passiert, wenn das Programm abstürzt oder durch den Taskmanager beendet wird.
    Da wird OnAutoItExitRegister nicht ausgeführt und der Shutdown natürlich auch nicht.
    Kann das nachteilige Folgen haben?
    Wie wichtig ist der Shutdown von GDIPlus?

    Ingolf

  • Im schlimmsten Fall werden die Ressourcen nicht freigegeben -> Das Betriebssystem hat nen paar KB/MB weniger Arbeitsspeicher, bis zum nächsten Neustart.
    Also nichts wirklich schlimmes, da ein Programm nicht ständig abstürzen sollte. (Kann auch sein, dass das Betriebssystem erkennt, wo das Programm den Speicher hatte und den freiräumt, dann würds nur bis zum Ende des Programmes den Speicherplatz wegnehmen, was dann sofort wäre).