bei Programmende wird Speicher nicht freigeben (war: RAM)
-
Hi ihr,
Beende ich mein Programm mit exit(1), so wird es zwar beendet- bleibt aber im Arbeitsspeicher
Das frisst bei mehrmaligem Starten sehr an der Performance.
Wie kann ich auch den Speicher wieder freigeben?
cya
DavidEdit:
Bitte aussagekräftige Überschriften wählen. Danke!
-
Hallo
Woran willst du merken, das dein Programm nach dem Beenden (egal wie) noch im Speicher bleibt? Halbwegs moderne Windowsversionen ab 2000 geben automatisch den ganzen Speicher von Programmen wieder frei.
Nitzsdestortotz ist exit(1) auch nicht gut. Denn es werden innerhalb des Programms keine Aufräumarbeiten durch Destruktoren ausgeführt. Du solltest für regulären Programmbeenden in VCL-Anwendungen Application->Terminate(); ausführen.
Bei einem kritischen Fehler kannst du noch Exceptions werfen.bis bald
akari
-
Woran willst du merken, das dein Programm nach dem Beenden (egal wie) noch im Speicher bleibt? Halbwegs moderne Windowsversionen ab 2000 geben automatisch den ganzen Speicher von Programmen wieder frei.
Das merke ich einfach daran, dass meine Auslagerungsdatei nach mehrmaligem starten voll ist und auch nicht mehr geleert wird wenn ich das Programm beende.
Nitzsdestortotz ist exit(1) auch nicht gut. Denn es werden innerhalb des Programms keine Aufräumarbeiten durch Destruktoren ausgeführt. Du solltest für regulären Programmbeenden in VCL-Anwendungen Application->Terminate(); ausführen.
Bei einem kritischen Fehler kannst du noch Exceptions werfen.Hierbei tritt leider genau das selbe auf- aber dann muss ich halt damit leben
Man startet das Programm ja sowieso nicht so oft...
-
Hallo
was macht denn dein Programm, das es den Arbeitsspeicher auch nach Beenden noch belegt?! Wie ich bereits sagte, wird bei standardkonformenen und korrekten Programmierung immer der Speicher ausgeräumt, auch bei einer Exception. Der Rest übernimmt das BS, wenn es die Speicherbereiche zu dem Programm zu ordnen kann, wie es im Normalfall auch sein sollte.
bis bald
akari
-
Mh- irgendwie ist da noch ein Problem
Wenn ich mein Programm mit "exit(1)" beende, dann bleibt es nach dem Beenden noch als Prozess erhalten.
Eigentlich sollte es beendet werden- ich versteh das nicht ganz...