2009-08-27 6 views
0

의 유명한 가비지 컬렉터 액션 스크립트 3의 가비지 컬렉터에 대한 질문 :차일 및 부모와 다시 한번 액션 스크립트 3

나는 마스터 용기가있는 경우 : 그때 추가

var masterContainer:Sprite = new Sprite(); 

과 이 컨테이너에 아이 :

var childImage:Sprite = new Sprite(); 
masterContainer.addChild(childImage); 
addChild(masterContainer); 

그리고, 그때 가비지 컬렉터가 마스터 컨테이너를 수집 할 수 있도록하기로 결정하고 모두가 내용을의이 충분히 될 것인가? 단지 마스터 컨테이너 나중에에서 자신의 차일을 제거 할 수

removeChild(masterContainer); 
masterContainer = null; 

또는 내가 어딘가에 모든 자식 이미지 '참조를 저장해야합니까?

또한 가비지 수집기가 메시지를 삭제할 때 로그를 남기고 정확히 무엇을 삭제하는지 알려줄 수 있습니까? 이벤트의 일부 어쩌면?

답변

3

질문의 첫 번째 부분은

기술적으로는 충분합니다. 이것은 부작용에 달려 있지만. 청중이 약한 사람이라면 GCed를하지 않을 것입니다.

두 번째 부분 :

당신이 약한 키로 모니터링 할 객체와 사전을 가질 수 있습니다. 그런 다음 타이머를 실행하고 이것이 언제 삭제되는지보십시오.

+0

"약한 청취자가없는 경우 GCed가 발생하지 않습니다." 나는 동의하지 않는다. 청취중인 객체가 GC에 적합하면 강력한 청취자를 첨부 할 수 있습니다. 나는. 이 타이머는 활성 상태이므로 수집 할 수없는 개체가 참조하는 타이머 나 개체를 실행하는 스테이지에는 적용되지 않습니다. –

+0

약한 청취자는 객체의 참조 횟수에 더해져 GC에 적합하지 않게됩니다. 절대 표시되지 않으므로 GC를 실행하면 청소되지 않습니다. 이제 리스너를 제거하면 괜찮습니다.하지만 리스너가 연결되어있는 동안 객체는 0이 아닌 참조 카운트를 가지므로 아무데도 가지 않습니다. –

+0

만나서 반갑습니다. –

관련 문제