michael@0: test(); michael@0: michael@0: function test() michael@0: { michael@0: function generate_big_object_graph() michael@0: { michael@0: var root = {}; michael@0: f(root, 17); michael@0: return root; michael@0: function f(parent, depth) { michael@0: if (depth == 0) michael@0: return; michael@0: --depth; michael@0: michael@0: f(parent.a = {}, depth); michael@0: f(parent.b = {}, depth); michael@0: } michael@0: } michael@0: michael@0: function f(obj) { michael@0: with (obj) michael@0: return arguments; michael@0: } michael@0: michael@0: for(var i = 0; i != 10; ++i) michael@0: { michael@0: gc(); michael@0: var x = null; michael@0: x = f(generate_big_object_graph()); michael@0: michael@0: gc(); //all used michael@0: michael@0: x = null; michael@0: michael@0: gc(); //all free michael@0: } michael@0: }