DeviceCentral

L'ARGOMENTO FIGURA IN:

Gestione della memoria file di Flash Lite per i dispositivi portatili

In Flash Lite gli oggetti e le variabili ai quali i file non fanno più riferimento sono cancellati dalla memoria a intervalli regolari. Questo processo è chiamato raccolta cestino. In Flash Lite il processo di raccolta cestino viene eseguito ogni 60 secondi o quando l'uso della memoria file aumenta improvvisamente del 20% o di una percentuale superiore.

Sebbene non sia possibile controllare la modalità e la tempistica della raccolta cestino in Flash Lite, è tuttavia possibile liberare la memoria non necessaria in qualsiasi momento. Per le variabili di timeline o globali, utilizzate l'istruzione delete per liberare la memoria utilizzata dagli oggetti ActionScript. Per le variabili locali, come ad esempio una variabile specificata all'interno della definizione di una funzione, non è possibile utilizzare l'istruzione delete per liberare la memoria dell'oggetto, tuttavia è possibile impostare su null la variabile che fa riferimento a tale oggetto. In questo modo, è possibile liberare la memoria utilizzata dall'oggetto, ammesso che non vi siano ulteriori riferimenti a tale oggetto.

Nei due esempi di codice riportati di seguito viene mostrato come liberare la memoria utilizzata dagli oggetti eliminando la variabile che fa riferimento a tali oggetti. Gli esempi sono identici, con l'unica differenza che nel primo viene creata una variabile di timeline e nel secondo una variabile 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);

Come spiegato precedentemente, non è possibile utilizzare l'istruzione delete per liberare la memoria utilizzata da una variabile di funzione locale. Impostate invece il riferimento alla variabile su null, per eseguire le stesse operazioni eseguibili con 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();