Как запустить сборку мусора?
Кто-нибудь знает, возможно ли применить сборку мусора к новому компоненту StageVideo в AS3? Я пытался без успеха! Код ниже:
if ( this._stageVideo == null )
{
this._stageVideo = stage.stageVideos[0];
this._stageVideo.addEventListener(StageVideoEvent.RENDER_STATE, stageVideoStateChange);
}
Попытка в GC:
this._stageVideo = null;
this._stageVideo.removeEventListener(StageVideoEvent.RENDER_STATE, stageVideoStateChange);
1 ответ
this._stageVideo = null;
this._stageVideo.removeEventListener(StageVideoEvent.RENDER_STATE, stageVideoStateChange)
Я удивлен, что это сработало, должно выдать исключение, вы должны сначала удалить прослушиватели событий, а затем обнулить его ссылку.
Сборщик мусора не запускается каждый раз, когда вы что-то аннулируете, но если вы можете использовать профилировщик Flash Builder, вы можете попытаться форсировать GC, а также, если вы хотите протестировать его, вы можете упаковать проект как AIR и вызвать GC вручную.
Существует ошибка / функция, которая вызывает GC, если вам не удалось запустить LocalConnection дважды (http://www.nbilyk.com/flash-garbage-collection):
try {
new LocalConnection().connect('foo');
new LocalConnection().connect('foo');
} catch (e:Error) {}