이 글은 주로 JS 가비지 수집 메커니즘과 메모리 관리에 대한 간략한 분석을 소개합니다. 편집자는 꽤 좋다고 생각하므로 지금 공유하고 참고용으로 제공하겠습니다. 에디터를 따라가서 함께 살펴볼까요
가비지 컬렉션
JavaScript의 가비지 컬렉션 메커니즘은 매우 간단합니다. 더 이상 사용하지 않는 변수를 찾아서 해제합니다.
로컬 변수는 실행 중에만 존재합니다. 함수가 실행될 때 로컬 변수가 존재할 필요는 없습니다. 그러나 모든 변수가 그렇게 쉽게 판단할 수 있는 것은 아니므로 이러한 변수를 재활용하려면 몇 가지 방법을 사용해야 합니다.
1 마크 지우기:
자바스크립트의 최고 흔히 사용되는 가비지 수집 방법은 변수가 환경에 들어갈 때 변수가 환경에 들어갈 때 변수가 "탈출"로 표시됩니다. 일반적으로 환경으로 표시된 변수는 액세스할 방법이 없기 때문에 그대로 두어 변수를 지웁니다. 그런 다음 가비지 수집기가 메모리 정리 작업을 완료합니다.
2 참조 계산:
이 방법은 일반적으로 사용되지 않습니다. 참조 카운팅의 의미는 참조되는 각 값을 기록하는 것입니다. 횟수가 참조 횟수가 0이 되면 해당 값에 접근할 수 있는 방법이 없다는 의미입니다.
그러나 참조 계산에는 문제가 있습니다: 순환 참조. 예: 이 예에서는 Objecta와 ObjectB가 서로 인용됩니다. 즉, 이 두 개체의 참조는 2입니다. 표시 및 스윕 전략을 사용하는 구현에서는 함수가 실행된 후 두 개체가 모두 범위를 벗어나기 때문에 이 상호 참조는 문제가 되지 않습니다. 그러나 참조 계산 전략을 사용하는 구현에서는 참조 수가 결코 0이 되지 않기 때문에 함수가 실행된 후에도 objectA 및 objectB가 계속 존재합니다. 이 함수를 여러 번 호출하면 많은 양의 메모리가 재활용되지 않습니다
우리 모두는 웹 브라우저에 할당된 사용 가능한 메모리 양이 일반적으로 데스크톱 애플리케이션에 할당된 메모리 양보다 적다는 것을 알고 있습니다. 이것의 목적은 주로 보안상의 이유이며 JavaScript를 실행하는 웹 페이지가 모든 시스템 메모리를 사용하여 시스템 충돌을 일으키는 것을 방지하는 것입니다. 메모리 제한 문제는 변수에 대한 메모리 할당뿐만 아니라 스레드에서 동시에 실행될 수 있는 명령문 수와 호출 스택에도 영향을 미칩니다.
function problem(){ var objectA = new Object(); var objectB = new Object(); objectA.someOtherObject = objectB; objectB.anotherObject = objectA; }
관련 권장 사항:
java 가비지 수집 메커니즘, 메모리 관리
JS 가비지 수집 메커니즘 및 메모리 할당JavaScript 가비지 수집 메커니즘 및 메모리 누수 문제
위 내용은 JS 가비지 수집 메커니즘 및 메모리 관리에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!