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