在定时器对象中重新创建一个新变量会降低性能吗?
Can recreating a new variable inside a timer object decrease performance?
大家好,我想知道每次调用时在计时器对象内重新创建可变影片剪辑是否会降低性能或导致内存泄漏。这就是我现在的设置方式:
private function addSwimPowerUp(e:TimerEvent):void
{
var newSwimPower:mcSwimPower = new mcSwimPower();
stage.addChild(newSwimPower);
aSwimPowerUpArray.push(newSwimPower);
}
我对游戏中的所有计时器对象都这样做。我应该只声明 var newSwimPower
一个私有变量吗?
创建某物的新实例然后不对其进行任何操作将导致其最终被垃圾回收。也就是说,如果您的代码是这样的:
private function addSwimPowerUp(e:TimerEvent):void
{
var newSwimPower:mcSwimPower = new mcSwimPower();
}
然后所有这些新的 MovieClip 都会被清理干净。
也就是说,您要将这些对象添加到显示树和数组中。如果您不从 这些东西中删除对象,它将不会被垃圾收集,这将是内存泄漏。
为 newSwimPower
创建一个 class 级别变量并分配给它不会有任何区别,除非你不对引用它的 class 进行垃圾回收那么您创建的最后一个实例仍将在内存中。
大家好,我想知道每次调用时在计时器对象内重新创建可变影片剪辑是否会降低性能或导致内存泄漏。这就是我现在的设置方式:
private function addSwimPowerUp(e:TimerEvent):void
{
var newSwimPower:mcSwimPower = new mcSwimPower();
stage.addChild(newSwimPower);
aSwimPowerUpArray.push(newSwimPower);
}
我对游戏中的所有计时器对象都这样做。我应该只声明 var newSwimPower
一个私有变量吗?
创建某物的新实例然后不对其进行任何操作将导致其最终被垃圾回收。也就是说,如果您的代码是这样的:
private function addSwimPowerUp(e:TimerEvent):void
{
var newSwimPower:mcSwimPower = new mcSwimPower();
}
然后所有这些新的 MovieClip 都会被清理干净。
也就是说,您要将这些对象添加到显示树和数组中。如果您不从 这些东西中删除对象,它将不会被垃圾收集,这将是内存泄漏。
为 newSwimPower
创建一个 class 级别变量并分配给它不会有任何区别,除非你不对引用它的 class 进行垃圾回收那么您创建的最后一个实例仍将在内存中。