2011-04-24 6 views
1

JavaScript 가비지 콜렉터를 실행하려면 어떤 트리거가 필요합니까? 분명히 이것은 JS 엔진에 따라 다르지만 대략적인 아이디어를 얻으려고합니다. 사용 가능한 메모리가 특정 임계 값 미만일 때만입니까?JS 가비지 콜렉션

감사합니다.

답변

2

정말 다양합니다. 예를 들어, SpiderMonkey는 메모리 할당량에 대한 다양한 추론을 기반으로하는 GC이지만 충분한 DOM 이벤트가 처리 된 후, 스크립트가 충분히 오래 실행 된 후, 여러 가지 상황 에서처럼 GC embedding이 GC를 트리거합니다. 탭/창을 닫거나로드하는 등의 일을합니다. 그리고 관련된 경험적 방법은 다른 Firefox 릴리스간에 격렬하게 변경되어 다시 변경 될 것입니다.

그리고 단 하나의 브라우저에 대한 것입니다.

0

이것은 브라우저마다 다르며 내가 아는 한 절대적으로 제어 할 수 없습니다.

왜 당신이 알고 싶어 D :

은 마찬가지로 당신은 당신이 로딩 표시 줄을 표시 할 경우 정말 짜증나는 DOM을 렌더링하기 때 통제 할, 없다?

+0

호기심. 그냥 더 잘 이해하려고 노력합니다. – Steve

2

다양합니다. Chrome (V8)은 단순히 타이머 및 활동 모니터 (엔진이 사용 중일 때 실행되지 않음)를 기반으로합니다.

+0

타이머가 작동하면 마크와 스윕이 동시에 수행됩니까? – Steve

+1

v8은 마크 스윕 콤팩트와 청소용 GPS를 모두 실행하며 예와 동시에 마크 & 스윕을 실행합니다. 때로는 애플리케이션 일시 중지가 발생할 수 있습니다. –

관련 문제