참조 카운팅 가비지 수집
이것은 가장 간단한 가비지 수집 알고리즘입니다. 이 알고리즘은 참조가 남아 있지 않은 개체를 찾습니다. 개체에 연결된 참조가 없는 경우 개체는 가비지 수집에 적합합니다. 가비지 수집은 아래 예에 설명되어 있습니다.
예시
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();