내가 플래시 가비지 컬렉션 수행 방법에 대한이 정말 좋은 기사 읽기 카운트 참조하여 GC 자격이 만드는 제품 : http://www.adobe.com/devnet/flashplayer/articles/garbage_collection.htmlAS3 :
을하지만 궁금 당신은 확실히 모든 객체가 있었다 있도록해야 할 것입니다 무슨 모든 더 많은 CPU 집약 마크 및 스윕 메소드보다는 빠른 참조 카운팅 메소드로 수집 된 가비지. 나는 다음과 같은 기능을 가지고 있고 그것으로 객체 생성한다고 가정 :
function makeIt():void {
var spriteA:Sprite = new Sprite();
var spriteB:Sprite = new Sprite();
spriteB.addEventListener(MouseEvent.CLICK, myCallback);
var spriteC:Sprite = new Sprite();
spriteA.addChild(spriteB);
spriteB.addChild(spriteC);
stage.addChild(spriteA);
}
을하면 내가 방금했던, 단지 표시로 GC를받을 수 및 청소 것이다 다음?
spriteB.removeEventListener(MouseEvent.CLICK, myCallback);
stage.removeChild(SpriteA);
부모는 자녀에 대한 참조를 가지고 있고, 아이들은 부모에 대한 참조를 가지고, 그래서 나는이 모든 참조 카운트에 의해 GC하기에 적격 수 있도록해야 할 것?
spriteB.removeChild(spriteC);
spriteB.removeEventListener(MouseEvent.CLICK, myCallback);
spriteA.removeChild(spriteB);
stage.removeChild(spriteA);
spriteA = null;
spriteB 및 spriteC도 null로 설정해야합니까? spriteC가 대신 Sprite를 확장하고 자체 속성 중 몇 가지를 가진 클래스의 인스턴스 인 경우 어떻게됩니까? 나도 그걸 무시해야 할까?
null로 설정하면 'spriteB'와'spriteC'는 아무 효과가 없습니다. 이들은 로컬 함수 변수입니다. 핸들러 자체를 처리하지 않기 때문에 이벤트 핸들러를 제거 할 필요는 없지만 디스패처에 대한 종속성도 작성하지 않습니다. –