Javascript 쓰레기 수집 IE8 메모리 넘 침
자바 스 크 립 트 고급 프로 그래 밍 (제3 판), 4.3 절, 쓰레기 수집
[개괄]
1. 쓰레기 수집 기 는 무용 변수 표 지 를 식별 하여 회수 할 수 있 는 지 확인한다.
2. 불필요 한 변 수 를 표시 하 는 전략 은 실현 에 따라 다 를 수 있 지만 브 라 우 저 에서 의 실현 은 보통 두 가지 전략 이 있 습 니 다.
3. JavaScript 에서 가장 많이 사용 되 는 쓰레기 수집 정책 은 태그 제거 입 니 다. 대부분의 브 라 우 저 는 이러한 정책 을 사용 합 니 다.
4. 자주 사용 되 지 않 는 쓰레기 수집 전략 은 인용 계수 라 고 하 는데 한 번 인용 + 1, 인용 취소 하면 - 1, 0 이면 수집 합 니 다.
Navigator 3.0 에 서 는 이러한 방식 을 사용 합 니 다. bug 가 있 습 니 다. 순환 참조:
function problem(){
var objectA = new Object();
var objectB = new Object();
objectA.someOtherObject = objectB;
objectB.anotherObject = objectA;
}
5. IE9 이전에 IE 의 JavaScript 엔진 은 명확 한 태그 정책 을 사 용 했 습 니 다.
그러나 BOM 과 DOM 대상 은 모두 C + + 의 COM 대상 을 사용 하여 이 루어 지고 COM 대상 의 쓰레기 수집 체 제 는 계수 전략 을 참조 합 니 다.
따라서 IE 에 서 는 BOM 이나 DOM 대상 과 관련 된 경우 순환 참조 문제 가 발생 합 니 다.
예 를 들 면:
var element = document.getElementById("some_element");
var myObject = new Object();
myObject.element = element;
element.someObject = myObject;
myObject (js) 의 속성 은 element (DOM), element (DOM) 의 속성 은 myObject (js),
따라서 요소 가 페이지 에서 제거 되 어도 회수 되 지 않 습 니 다!
6. IE9 에서 BOM 과 DOM 을 모두 진정한 자 바스 크 립 트 대상 으로 전환 했다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.