Zitat von
Robert_G:
Vorher waren es 7 MB Speichernutzung, mit 501 Forms etwa 50MB und nach dem Löschen etwa 9MB.
Für den Unterschied gibt es zwei mögliche Erklärungen:
- Es wurde Code ausgeführt, der Speicher reserviert, der erst wieder beim Beenden (also von TApplication.Destroy) freigegeben wird.
- Der Delphi-Speichermanager hält freigegebenen Speicher zurück um ihn um Welten schneller an eine Speicherallozierung (GetMem/AllocMem/New/...) zu liefern, als es Windows je könnte. Somit bekommt Windows natürlich nichts von der Freigabe mit und zeigt im Taskmanager einen höheren Verbrauch an, auch wenn der Speicher für das Programm "frei" ist.
Das ist auch der Grund für den enormen Speicherverlust beim zeichenweise Zusammenstückeln von Strings und dynamischen Arrays in Schleifen.