Flash Lite efface de façon périodique les objets et les variables qui ne sont plus référencés par le fichier. Ce processus est appelé suppression. Flash Lite exécute ce processus toutes les 60 secondes ou lorsque l'utilisation de la mémoire du fichier augmente soudain de 20 % ou plus.
Bien que vous ne puissiez pas contrôler la façon dont Flash Lite exécute ce processus ou sa fréquence, vous pouvez cependant libérer la mémoire non utilisée. Pour un scénario ou des variables globales, utilisez l'instruction delete pour libérer la mémoire utilisée par l'objet ActionScript. Pour les variables locales, par exemple une variable créée par une fonction, vous ne pouvez pas utiliser l'instruction delete pour libérer la mémoire d'un objet ; en revanche, vous pouvez définir sur null la variable qui référence l'objet. Cette opération libère la mémoire utilisée par l'objet, à condition que cet objet ne soit pas référencé ailleurs.
Les deux exemples de code suivants indiquent comment libérer la mémoire utilisée par les objets en supprimant la variable qui fait référence à ces objets. Les exemples sont presque identiques, le premier crée une variable de scénario, tandis que le second génère une variable globale.
// 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);
Comme indiqué plus haut, vous ne pouvez pas utiliser l'instruction delete pour libérer la mémoire utilisée par une variable de fonction locale. En revanche, vous pouvez définir la référence de variable sur null, ce qui a le même effet que la commande 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();