hallo zusammen!
Um meinen backtraking-algo effizienter zu gestalten schreibe ich viele objekte in ein TreeSet hinein.
Dumm nur, dass ab etwa 1.000.000 Objekten ein java.lang.OutOfMemoryError: Java heap space kommt. das verwundert mich, da ich ohne TreeSet locker 500.000.000 Objekte gleichzeit im Speicher haben kann.
weshalb gibt es mit dem TreeSet einen heap-überlauf? die verwaltungs-stukturen jedes baum-knotens können ja wohl kaum so rießig sein? (mir fallen da spontan 3 pointer ein: links, rechts, pointer auf eingefügtes objekt).
habe mir schon überlegt deshalb selbst einen binärbaum direkt mit den einzufügenden objekten zu bauen (dürfte leicht sein, ich brauch nur einfügen und suchen, nicht aber löschen) nur wollte ich zur sicherheit hier nochmal nachfragen. das problem daran ist dann aber übrigens, dass ich schnell einen entarteten baum bekommen könnte. ohne AVL ist O(log(n)) eben nicht mehr garantiert.
vielen dank + grüße
Vasi
Um meinen backtraking-algo effizienter zu gestalten schreibe ich viele objekte in ein TreeSet hinein.
Dumm nur, dass ab etwa 1.000.000 Objekten ein java.lang.OutOfMemoryError: Java heap space kommt. das verwundert mich, da ich ohne TreeSet locker 500.000.000 Objekte gleichzeit im Speicher haben kann.
weshalb gibt es mit dem TreeSet einen heap-überlauf? die verwaltungs-stukturen jedes baum-knotens können ja wohl kaum so rießig sein? (mir fallen da spontan 3 pointer ein: links, rechts, pointer auf eingefügtes objekt).
habe mir schon überlegt deshalb selbst einen binärbaum direkt mit den einzufügenden objekten zu bauen (dürfte leicht sein, ich brauch nur einfügen und suchen, nicht aber löschen) nur wollte ich zur sicherheit hier nochmal nachfragen. das problem daran ist dann aber übrigens, dass ich schnell einen entarteten baum bekommen könnte. ohne AVL ist O(log(n)) eben nicht mehr garantiert.
vielen dank + grüße
Vasi