JavaScriptのGCアルゴリズム
昔は参照カウント方式でガベージコレクションを行っていたが、参照カウント方式では例えば以下のようなサンプルコードでメモリリークが発生してしまう。
var div; window.onload = function(){ div = document.getElementById("myDivElement"); div.circularReference = div; div.lotsOfData = new Array(10000).join("*"); };
この問題を回避するために、最近のJavaScript実装では マーク·アンド·スイープアルゴリズム を用いていることが多い。
マーク・アンドスイープアルゴリズムについては、
Java Memory Managementを読んだ - 真面目に、強く、上品に
でも述べたことがあるが、Javaでも同様のガベージコレクションアルゴリズムが使われている。