currentMem = Runtime.getRuntime().freeMemory(); usage = (double)currentMem/(double)totalMem;  if (usage>0.90) { break; }
    public WordTree(Vector<Character> alpha, int depth) {                int alphaSize = alpha.size();                Vector<WordTreeNode> newChilds = new Vector<WordTreeNode>();        Vector<WordTreeNode> parents, newParents;                // erzeuge zunchst das Wurzelelement, hnge dort        // alle Buchstaben des Eingabealphabets ran                for ( int i = 0 ; i < alphaSize ; i++ ) {            WordTreeNode newNode = new WordTreeNode(alpha.get(i));            newChilds.add(newNode);        }                root = new WordTreeNode(newChilds);                // die weiterzubearbeitenden Knoten sind die Kinder der Wurzel                parents = newChilds;                for ( int i = 1 ; i < (depth-1) ; i++ ) {                        newParents = new Vector<WordTreeNode>();                        // fr jeden Knoten der derzeitigen parents-Menge...            for ( Iterator<WordTreeNode> it = parents.iterator(); it.hasNext(); ) {                                // ...fge wiederrum als Kinder alle Elemente des                // Eingabealphabets ein                                newChilds = new Vector<WordTreeNode>();                                for ( int j = 0 ; j < alphaSize ; j++ ) {                    WordTreeNode newNode = new WordTreeNode(alpha.get(j));                    newChilds.add(newNode);                }                                // setze die Kinder des aktuellen Elternknotens                it.next().setChilds(newChilds);                                // diese Kinderknoten sind nun Teil der neuen Elternknoten                newParents.addAll(newChilds);                            }                        parents = newParents;                    }            }