Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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.
Das bezweifel ich. Die Standard Heapsize ist maximal 64 MB groß. Das sind 67108864 Byte. Bei der Anzahl an Objekten, dürfte jedes Objekt maximal 1,07 Bit groß sein. :roll:
Das bezweifel ich. Die Standard Heapsize ist maximal 64 MB groß. Das sind 67108864 Byte. Bei der Anzahl an Objekten, dürfte jedes Objekt maximal 1,07 Bit groß sein. :roll:
hi
hoppla, da ist mir nat. was verrutscht. :lol: sind 5.000.000. meinen VM-Speicher hab ich schon auf 512 MB erhöht.
dann mache ich offensichtlich einen fehler beim zählen der objekte mit und ohne set, da die maximal-zahl theorethisch gleich groß sein müsste? (ich glaub ich hab in der eile nicht beachtet welche objekte in der rek. funktion automatisch wieder freigegeben werden...).
möchte es nur genau wissen: der speicherverbrauch ist etwa gleich? dann komm ich wohl um eine db wie hsql nicht drumherum... oder halt irgendwas, das mir das zeugs auf platte auslagert. toll wärs, wenns in der java-klassenbibl. schon so etwas wie ein "TreeSetWithHDAuslagerung" gäbe... lol
dann mache ich offensichtlich einen fehler beim zählen der objekte mit und ohne set, da die maximal-zahl theorethisch gleich groß sein müsste? (ich glaub ich hab in der eile nicht beachtet welche objekte in der rek. funktion automatisch wieder freigegeben werden...).
Ich schätze auch, dass da Objekte wohl vom GC wieder freigegeben wurden. Wenn Du die Objekte im TreeSet hälst, dann bleiben sie ja definitiv alle im Speicher.