JavaScript의 가비지 수집 메커니즘에 대한 자세한 설명

JavaScript에서 가비지 컬렉션(Garbage Collection)은 다른 객체가 사용할 수 있도록 메모리 공간을 확보하기 위해 더 이상 사용되지 않는 객체를 감지하고 재활용하는 자동 메모리 관리 메커니즘입니다. 이 기사에서는 JavaScript의 가비지 수집 메커니즘을 자세히 소개하고 해당 소스 코드 예제를 제공합니다.

JavaScript의 가비지 수집 메커니즘은 주로 참조 계산과 표시 정리라는 두 가지 핵심 개념에 의존합니다.

  1. 참조 카운팅(Reference Counting): 참조 횟수를 추적하여 각 객체를 재활용할지 여부를 결정하는 간단한 가비지 수집 알고리즘입니다. 객체가 생성될 때 참조 횟수는 1입니다. 참조가 객체를 가리킬 때마다 참조 카운트는 1씩 증가하고, 참조가 만료되거나 다른 값이 할당되면 참조 카운트는 1씩 감소합니다. 참조 횟수가 0이면 해당 개체가 더 이상 참조되지 않고 재활용될 수 있음을 의미합니다.

그러나 참조 카운팅 알고리즘, 즉 순환 참조에는 문제가 있습니다. 두 개 이상의 개체가 서로 참조하면 참조 횟수가 0에 도달하지 않아 메모리 누수가 발생합니다. 이 문제를 해결하기 위해 JavaScript 엔진은 표시 및 청소 알고리즘을 도입했습니다.

  1. Mark and Sweep: Mark and Sweep 알고리즘은 루트 개체(일반적으로 전역 개체)를 시작점으로 사용하고 개체의 참조 관계를 순회하며 액세스 가능한 모든 개체를 표시합니다. 표시 단계가 끝나면 표시되지 않은 개체는 액세스할 수 없는 가비지 개체이므로 재활용할 수 있습니다.

다음은 JavaScript의 가비지 수집 프로세스를 보여주는 샘플 코드입니다.

// 创建对象
let obj1 

Supongo que te gusta

Origin blog.csdn.net/Jack_user/article/details/133538798
Recomendado
Clasificación