Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript의 참조 카운팅 가비지 컬렉션에 대해 자세히 설명하시겠습니까?

<시간/>

참조 카운팅 가비지 수집

이것은 가장 간단한 가비지 수집 알고리즘입니다. 이 알고리즘은 참조가 남아 있지 않은 개체를 찾습니다. 개체에 연결된 참조가 없는 경우 개체는 가비지 수집에 적합합니다. 가비지 수집은 아래 예에 설명되어 있습니다.

예시

var obj = {
      x: { y: 2 }
         };
         // 2 objects created. One is referenced by the other as one of its properties.
         // Obviously, none can be garbage-collected
obj = 1; // what was the 'x' property of the object originally in obj
         // has zero references to it. It can be garbage collected.

제한 사항

주기 의 경우 참조 카운팅 가비지 수집에는 제한이 있으며 아래 예에서 설명합니다.

예시

다음 예에서는 두 개의 개체가 만들어지고 거기에서 주기를 만들어 서로 참조했습니다. 함수 호출 후에는 범위를 벗어나므로 사실상 쓸모가 없으며 해제될 수 있습니다. 그러나 참조 카운팅 알고리즘은 두 개체 각각이 최소 한 번 이상 참조되기 때문에 둘 다 가비지 수집될 수 없다고 간주합니다.

function f() {
var obj1 = {};
var obj2 = {};
obj1.p = obj2; // o1 references o2
obj2.p = obj1; // o2 references o1. This creates a cycle.
}
f();