Flash Lite löscht regelmäßig Objekte und Variablen aus dem Speicher, auf die eine Datei nicht mehr verweist. Dies wird als Entsorgung bezeichnet. Flash Lite führt die Entsorgung alle 60 Sekunden aus, oder immer dann, wenn die Auslastung des Dateispeichers plötzlich um 20 % oder mehr zunimmt.
Sie können zwar nicht steuern, wie und wann Flash Lite die Entsorgung vornimmt, aber dennoch nicht benötigten Speicherplatz gezielt freimachen. Geben Sie bei Zeitachsen- oder globalen Variablen den Speicherplatz, der von ActionScript-Objekten genutzt wird, mit dem Befehl delete frei. Bei lokalen Variablen, beispielsweise einer mit einer Funktionsdefinition definierten Variable, können Sie mit dem Befehl delete den Speicher eines Objektes nicht räumen, aber die auf das Objekt verweisende Variable auf null setzen. Dadurch wird der Speicher, den das Objekt belegt, freigegeben. Voraussetzung ist, dass keine anderen Verweise auf dieses Objekt bestehen.
Die folgenden beiden Codebeispiele zeigen, wie man von Objekten belegten Speicherplatz freigibt, indem man die auf diese Objekte verweisende Variable löscht. Die Beispiele sind identisch, allerdings mit der Ausnahme, dass im ersten Beispiel eine Zeitachsenvariable und im zweiten eine globale Variable erzeugt wird.
// First case: variable attached to a movie or // movie clip timeline // // Create the Date object. var mcDateObject = new Date(); // Returns the current date as a string. trace(mcDateObject); // Delete the object. delete mcDateObject; // Returns undefined. trace(mcDateObject); // // Second case: global variable attached to a movie or // movie clip timeline // // Create the Date object. _global.gDateObject = new Date(); // Returns the current date as a string. trace(_global.gDateObject); // Delete the object. delete _global.gDateObject; // Returns undefined. trace(_global.gDateObject);
Wie zuvor erwähnt, können Sie den Befehl delete nicht verwenden, um Speicher freizumachen, den eine lokale Funktionsvariable verwendet. Setzen Sie stattdessen den Variablenverweis auf null. Das hat den gleichen Effekt wie der Befehl delete.
function func() { // Create the Date object. var funcDateObject = new Date(); // Returns the current date as a string. trace(funcDateObject); // Delete has no effect. delete funcDateObject; // Still returns the current date. trace(funcDateObject); // Set the object reference to null. funcDateObject = null; // Returns null. trace(funcDateObject); } // Call func() function. func();