僕
が作ったJavaScriptにのっけたプチにせGCです。 何も使えないので雰囲気だけ楽しんでください。 FireFoxしか動かないよ。Mark処理がむずかったので、僕の環境しか動かないかもよ。 HEAP TABLE
var v_cnt = 0; for(var i=v_cnt; i<90; i++) { p = v_cnt+i; window["obj_"+p] = gc.new_obj(); window["obj_"+p].obj = "hoge"+p; } v_cnt+=i; obj_3 = null; obj_20 = null; obj_12 = null; obj_19 = null; obj_7 = null; obj_1 = null; obj_9 = null; obj_15 = null;
gc.js
//JavaScript GC on GC //algorithm is "mark-and-sweep" //someday challenging "incremental" or "concurrent" gc //.. when is someday? var gc = { heap : [], heap_size : 100, starvation_p : 0.1, free_list : [], main : function() { gc.add_heap(); gc.garbage_collect(); }, new_chunk : function(){ return { obj : null, color : 0, is_gc_obj : true, is_use : false }; }, garbage_collect : function() { gc.mark(); gc.sweep(); setTimeout(arguments.callee, 10000); }, add_heap : function(){ var pt=0; if(!gc.heap.length){ gc.heap = new Array(gc.heap_size); } else { pt = gc.heap.length; gc.heap = gc.heap.concat(new Array(Math.floor(gc.heap.length*0.2))); } for(var i=pt,len=gc.heap.length; i