DeviceCentral

나타나는 항목:

모바일 장치의 Flash Lite 파일 메모리 관리

Flash Lite에서는 파일이 더 이상 참조하지 않는 개체와 변수를 메모리에서 정기적으로 지웁니다. 이것을 가비지 수집이라고 합니다. Flash Lite는 60초마다 한 번씩, 또는 파일 메모리 사용이 20% 이상 갑자기 늘어날 때마다 가비지 수집 프로세스를 실행합니다.

Flash Lite에서 가비지 수집을 수행하는 방법과 시기를 제어할 수는 없지만 불필요한 메모리를 의도적으로 해제할 수 있습니다. 타임라인이나 전역 변수의 경우 ActionScript 개체가 사용하는 메모리를 해제하려면 delete 문을 사용하십시오. 로컬 변수(예: 함수 정의에서 정의된 변수)의 경우에는 delete 문을 사용하여 개체의 메모리를 해제할 수 없지만 개체를 참조하는 변수를 null로 설정할 수 있습니다. 이렇게 하면 해당 개체에 대한 다른 참조가 없는 경우 개체가 사용하는 메모리가 해제됩니다.

다음 두 코드 예제에서는 이러한 개체를 참조하는 변수를 삭제하여 개체가 사용하는 메모리를 해제하는 방법을 보여 줍니다. 첫 번째 예제에서는 타임라인 변수를 만들고 두 번째 예제에서는 전역 변수를 만드는 것을 제외하고 두 예제는 동일합니다.

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

앞에서 언급했듯이 delete 문을 사용하여 로컬 함수 변수가 사용하는 메모리를 해제할 수 없습니다. 대신 변수 참조를 null로 설정하면 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();