DeviceCentral

主题位于:

管理用于移动设备的 Flash Lite 文件内存

Flash Lite 定期从内存中清除文件不再引用的所有对象和变量。这种操作称为垃圾回收。Flash Lite 每 60 秒运行一次垃圾回收进程,或者在文件内存使用量突然增加 20% 或更多时运行垃圾回收进程。

虽然您不能控制 Flash Lite 执行垃圾回收的方式和时间,但仍可以有意释放不需要的内存。对于时间轴或全局变量,可以使用 delete 语句来释放 ActionScript 对象使用的内存。对于局部变量(例如,在函数定义内定义的变量),不能使用 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();

有关创建移动电话和移动设备内容的更多技巧和方法,请参阅 www.adobe.com/go/learn_cs_mobilewiki_en