Gibt es eine Möglichkeit, Speicher vollständig in TCL freizugeben, dh es wieder dem Betriebssystem zuzuweisen, ohne den tclsh.85-Prozess zu schließen?Eine mögliche Methode, Speicher in TCL vollständig freizugeben?
Antwort
Wenn Sie dies tun, weil Sie im Begriff sind, die tcl-DLL aus Ihrem Prozess zu entladen, gibt es den Tcl_Finalize()
API-Aufruf. Andernfalls, nein, es gibt keine Möglichkeit, dies standardmäßig zu tun. Wenn Sie Tcl mit dem definierten PURIFY
-Symbol erstellen (benannt für ein kommerzielles Tool, das eine Speicheranalyse durchführt), verwendet Tcl den Systemspeicherzuordner anstelle seines eigenen leistungsstarken Thread-fähigen Zuordners. dass könnte in der Lage sein, Speicher zurück zum Betriebssystem freizugeben. Oder es könnte nicht sein; es liegt völlig außerhalb von Tcls Händen.
Es gibt keine Skript-Ebene API für diese überhaupt. Wenn ein Prozess viel Speicher verwendet, wird er entweder bald beendet, der Speicher wird wieder verwendet, oder er kann sich darauf verlassen, dass das Betriebssystem den ungenutzten Speicher ausblendet.
Ich nehme an, Sie sind bereits 'unset' Variablen und so weiter. –
Ja, wurde in diesem Verfahren nicht gesetzt –