js 쓰레기 회수 및 메모리 유출
js 는 신청 하지만 사용 하지 않 은 메모 리 를 자동 으로 회수 할 수 있 습 니 다. 제거 할 때마다 필요 한 성능 이 크기 때문에 자주 새로 고침 하 는 것 이 아니 라 일정 시간 마다 한 번 씩 진행 합 니 다.
회수 하 는 두 가지 방식
태그 지우 기 (상용) 는 메모리 에 변 수 를 먼저 표시 한 다음 환경 에 들 어가 거나 인 용 된 변 수 를 제거 합 니 다. 환경 에 들 어가 환경 을 종료 하면 다시 표시 되 고 지 워 집 니 다. 메모 리 를 방출 합 니 다.
인용 계수 계산 변수 가 인 용 된 횟수, 인용 횟수 가 0 이면 메모리 가 삭 제 됩 니 다.단점:
인용 횟수 가 0 이 아니 지만 필요 하지 않 은 메모리 를 지 울 수 없습니다.
let arr = [1,2,3];
console.log('ok');
// [1,2,3] 1,
// :arr.length=0
순환 인용 문 제 를 해결 할 수 없습니다
function fn(){
let obj1 = {};
let obj2 = {};
obj1.a = obj2;
obj2.b = obj1;
}
// : obj1 = null obj2 = null
메모리 누설
어떤 경우 에는 메모 리 를 방출 할 수 없습니다. 변 수 는 환경 에 있 습 니 다 메모리 누 출 이 발생 한 경우
가장 흔 한 것 은 폐쇄 입 니 다.
패 키 지 를 닫 으 면 소각 되 지 않 는 스 택 메모 리 를 만 들 것 입 니 다.
부주의 한 전역 변수
function fn(){
obj = {};// ,
}
타이머 가 제거 되 지 않 았 습 니 다
setInterval()
setTimeout()
//
id
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.