DeviceCentral

ESTE TEMA APARECE EN:

Gestión de la memoria de archivos de Flash Lite para dispositivos móviles

Flash Lite borra periódicamente de la memoria los objetos y variables a los que ya no hace referencia un archivo. Esta operación se denomina recolección de elementos no utilizados. Flash Lite ejecuta su proceso de recolección de elementos no utilizados una vez cada 60 segundos, o siempre que el uso de la memoria de archivos asciende bruscamente al 20% o más.

Aunque no es posible controlar cómo y cuándo Flash Lite realiza la recolección de elementos no utilizados, sí que puede liberar deliberadamente la memoria innecesaria. En el caso de las variables globales o de la línea del tiempo, utilice la instrucción delete para liberar la memoria utilizada por los objetos de ActionScript. En el caso de las variables locales (como una variable establecida en la definición de una función), no puede utilizar la instrucción delete para liberar la memoria de un objeto, pero puede establecer en null la variable que hace referencia al objeto. De esta forma, liberará la memoria utilizada por el objeto, siempre que no existan otras referencias a ese objeto.

En los dos ejemplos de código siguientes se muestra cómo liberar la memoria utilizada por los objetos eliminando la variable que hace referencia a esos objetos. Los ejemplos son idénticos con la salvedad de que en el primer ejemplo se crea una variable de la línea de tiempo y en el segundo se crea una variable global.

// 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);

Como se mencionó anteriormente, no puede utilizar la instrucción delete para liberar la memoria utilizada por la variable de una función local. En lugar de ello, establezca la referencia de la variable en null, lo que es lo mismo que utilizar 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();