2009-11-12 3 views

답변

3

은 기본적으로 당신은 객체의 이벤트 리스너를 모두 제거하고 나머지를 완전히 해제 사용할 수 있도록 그것은 모든 참조를 제거하셔야합니다 신청.

이벤트 리스너를 제거하는 작업은 *.removeEventListener(event type, function)과 상당히 밀접한 관계가 있으며 참조를 제거하려면 delete(varName)을 사용하십시오.

위의 작업을 수행하는 것이 대부분의 경우에 효과적 일 수 있지만 여전히 충분하지 않은 경우가 있으며 garbace 컬렉션을 실제로 활용하려면 원하는 시점이 아니라 코드의 모든 영역에서 지원 방법을 통합해야합니다. 뭔가를 제거합니다.

zombiegx는 자세한 정보를 찾을 때 두 가지 가장 큰 자산을 게시했습니다.

0

http://www.adobe.com/devnet/flashplayer/articles/garbage_collection.html

이 내가 가비지 컬렉션에 대한 발견 한 최고의 문서입니다. 간단히 말해서 VM2는 Mark Sweeping이라는 기술을 사용합니다. 기본적으로 응용 프로그램의 모든 객체를 나무처럼 가로 지르고 표시합니다. 더 이상 표시되지 않은 오브젝트는 할당 해제 될 수 있습니다. 이 프로세스는 여러 프레임에서 발생하며 한 번에 발생하는 것은 아닙니다.

가비지 수집에 적합한 항목에 대해서는 참조가 없어야하므로 예를 들어 표시 목록에서 제거해야하며 참조가있는 다른 개체는 제거하지 않아야합니다.

주목해야 할 것은 약한 참조입니다. 예를 들어 Dictionary 객체는 부울을 전달하여 약한 참조를 사용할 수 있습니다. 이것이 의미하는 것은 약한 참조를 사용하도록 설정된 사전에 객체를 놓을 때 참조로 간주되지 않으므로 가비지 수집에 적합하다는 것입니다 (다른 참조가 없다고 가정).

0

이 : Grant Skinner - Resource management for as3. FlashPlayers 가비지 컬렉터에 대해 알아야 할 모든 정보를 알려주고 여러 가지 팁을 보여줍니다. as3을 사용하는 모든 사람이 그것을 읽어야합니다!

1

이 위에 나열된 블로그 게시물에 포함에 대해 알아야 할 대부분의 모든하지만, 다운 기본적인 휴식 :

  1. 제거 모든 객체 참조. 여기에는 위에서 설명한 것처럼 이벤트 리스너를 제거하거나 약한 참조를 사용하는 것이 포함되며 해당 객체가 컬렉션 객체에 없는지 확인합니다.
  2. 원래 객체 핸들을 null로 설정하여 가비지 컬렉터가 참조를 인식하지 못하게합니다. 더 오래 활성화 됨
  3. 대기. :) 또는 위의 링크 된 Skinner 그 트릭을 사용하여 가비지 콜렉션을 빠르게 시도하십시오.
+0

가젯 수집을 강제하기 위해 해킹을 사용하지 마십시오. - 보조자 조언 : – Allan

+0

예 - 몇 년 전에 발표 된 360 Flex의 프레젠테이션에이 해킹을 포함 시켰습니다. Adobe Flex 팀원은 그다지 열정적이지 않았습니다. –