From: brian Date: Thu, 3 Jun 2004 21:20:28 +0000 (+0000) Subject: cut down on balancedtree's memory usage X-Git-Url: http://git.megacz.com/?p=org.ibex.core.git;a=commitdiff_plain;h=e0feceda4e76d2a5ee59b26bc0f3cf38fe73109b cut down on balancedtree's memory usage darcs-hash:20040603212028-24bed-e7bb14306493bdd6b9ac7d76fafd1d688ae9bdd8.gz --- diff --git a/src/org/ibex/util/BalancedTree.java b/src/org/ibex/util/BalancedTree.java index 82226c2..3e751fd 100644 --- a/src/org/ibex/util/BalancedTree.java +++ b/src/org/ibex/util/BalancedTree.java @@ -22,6 +22,8 @@ public class BalancedTree { private int cached_index = -1; private int cached_slot = -1; + + private FinalizationHelper fh; // Public API ////////////////////////////////////////////////////////////////////////// @@ -43,6 +45,7 @@ public class BalancedTree { if (root != 0) { insert(index, arg, root, 0, false, false); } else { + if(fh == null) fh = new FinalizationHelper(this); root = arg; left[arg] = right[arg] = parent[arg] = 0; size[arg] = 1; @@ -140,9 +143,6 @@ public class BalancedTree { root = 0; } } - - protected void finalize() { clear(); } - // Node Data ///////////////////////////////////////////////////////////////////////// @@ -389,6 +389,12 @@ public class BalancedTree { return slot; } } + + static class FinalizationHelper { + private BalancedTree bt; + FinalizationHelper(BalancedTree bt) { this.bt = bt; } + protected void finalize() { bt.clear(); } + } // Debugging ///////////////////////////////////////////////////////////////////////////