2012-05-26 3 views
1

나는이 수업 AS3 : 익명 객체가 가비지 수집을합니까?

var myVar = new MyClass({param:1,param2:true,param3:"hello"}); 

의 새로운 인스턴스를 구성하는 많은 수행이 익명 객체는 가비지 컬렉션 도착합니까?

개체를 사용한 후에 개체를 만들고 파괴하는 것이 더 좋습니까?

var myConfig:Object = {param:1,param2:true,param3:"hello"} 
var myVar = new MyClass(myConfig); 
myConfig = null; 
+3

해당 객체는 참조로 전달됩니다. 그리고 변수는 범위를 벗어납니다. 그래서 그들은 사실 동일합니다. 따라서 MyClass가 객체에 대한 참조를 보유하지 않으면 어느 것이 든 가비지 수집 대상이됩니다. –

+1

한 번에 한 클래스의 인스턴스 만 필요로한다면 반드시 싱글 톤 디자인 패턴을 사용하는 것이 좋습니다. 개인적으로 내 config 클래스에 싱글 톤을 사용하므로 절대로이 문제가 발생하지 않습니다. –

+0

최근에 Flex PopUpManager와 같은 역할을하는 싱글 톤을 빌드하는 방법을 보여주는 Flex 용 샘플 싱글 톤을 업로드했습니다. 플렉스 또는 플래시로 태그를 지정하지 않았습니다. http://code.google.com/p/flexsingleton/ –

답변

4

"개체 리터럴"은 가비지 수집해야한다고 생각합니다.

플래시는 참조 카운팅과 마크 및 스윕이라는 두 가지 가비지 수집 방식을 사용합니다.

참조 횟수에 포착되지 않은 경우 마크 및 스윕으로 궁극적으로 해제해야합니다.

참조 횟수

힙에 각 객체가 가리키는 사물의 수를 추적합니다. 개체에 대한 참조를 만들 때마다 개체의 참조 횟수가 증가합니다. 참조를 삭제하면 개체의 참조 횟수가 감소합니다. 개체의 참조 번호가 0 ( ) (아무 것도 가리키고 있지 않음) 인 경우카운트 테이블 (ZCT)에 0이 추가됩니다. ZCT가 꽉 차면 스택을 스캔하여 스택에서 ZCT의 객체에 대한 참조를 찾습니다 ( ). 에있는 모든 객체는 스택 참조가없는 ZCT가 삭제됩니다.

지연 참조 카운팅의 문제점 중 하나는 순환 참조입니다. ObjectA와 ObjectB가 서로를 참조하지만 시스템의 다른 객체가 해당 객체를 가리 키지 않으면 절대 참조 수가이 아니므로 참조 카운트를 사용하는 가비지 수집에 적합하지 않습니다. 여기서 마크 및 스윕 가비지 수집이 도움이됩니다.

마크/Flash Player에서 실행하거나 AIR 여러 GCRoots이

응용 프로그램을 쓸어. GCRoot를 트리의 트렁크로 생각하면 애플리케이션의 오브젝트가 브랜치로 간주됩니다. 스테이지는 GCRoot입니다. 로더는 GCRoot입니다. 특정 메뉴는 GCRoot입니다. 응용 프로그램에서 아직 사용중인 모든 개체는 응용 프로그램 내의 GCRoot 중 하나에서 접근 할 수 있습니다. GCRoot는 결코 가비지 수집되지 않습니다.

응용 프로그램의 모든 객체에는 "마크 비트"가 있습니다. 가비지 콜렉션의 마크 단계 이 시작되면 해당 마크 비트가 모두 지워집니다. MMgc는 응용 프로그램의 모든 GCRoot를 추적합니다. 쓰레기 콜렉터는 해당 루트에서 시작하여 각 개체를 추적하고 도달하는 모든 개체에 대해 마크 비트를 설정합니다. 더 이상 의 루트에서 접근 할 수없는 객체는 응용 프로그램에서 어디서나 접근 할 수 없습니다. 마크 비트는 단계에서 설정되지 않습니다. 수집기가 찾은 모든 객체를 마킹 한 후에는 스윕 단계가 시작됩니다.설정된 마크 비트가없는 객체는 모두 이며 메모리가 회수됩니다.

+1

또는 더 간단하게 말하면 오브젝트를 'null'로 설정하여 오브젝트를 "* 삭제 *"할 수 없거나하지 않습니다. 그 모든 것은 변수를 * nothing *으로 가리 킵니다. 가비지 컬렉터가 더 이상 아무도 필요로하지 않으며 정리해야한다고 생각할 수 있도록 개체에 대한 모든 참조를 제거하려고합니다. 'delete' 키워드조차도 실제로 메모리에있는 객체를 삭제하지 않고, 비 밀폐 클래스에있는 객체에 대한 동적 참조만을 제거합니다. –

관련 문제