js 쓰레기 회수 및 메모리 유출

1335 단어
쓰레기 수 거
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

   

좋은 웹페이지 즐겨찾기