Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Thuật toán Reference-counting Garbage Collection trong JavaScript


Reference-counting GC

Thuật toán đơn giản nhất: object không còn reference nào → eligible cho GC.

Ví dụ cơ bản

var obj = { x: { y: 2 } }; // 2 object, obj tham chiếu x obj = 1; // obj cũ không còn reference → GC thu gom

Hạn chế: Circular Reference

function f() { var obj1 = {}; var obj2 = {}; obj1.p = obj2; obj2.p = obj1; // tạo cycle } f();

Sau f(), obj1, obj2 out of scope nhưng vẫn tham chiếu lẫn nhau (count=1) → reference-counting không thu gom được → memory leak.