01. november 2005 - 19:03Der er
19 kommentarer og 1 løsning
java.lang.OutOfMemoryError: Java heap space HJÆLP
Hej, jeg er igang med at skrive et java program som finder den koreste rejsetid med tog mellem to byer.
Som input tager programmet en køreplan på bestemt form, en startstation og en slutstation.
Som en led løsningen har jeg brugt bl.a.;
Dijkstras-shortest-path algoritme Oprettelse af prioritetskø vha. binær hob Brugt ArrayList til sortering Anvendt Hashmap
Jeg er sådan set færdig med programmet, og jeg får også det rigtige output, min problem er, når jeg indlæser en STOR køreplan (med omkring 5000 linjer), så kan jeg mærke min computer arbejder på højtryk, og efter omkring 30 sekunder eller 1 minut får jeg fejlmeddelsen;
java.lang.OutOfMemoryError: Java heap space
Hvad skyldes det, og hvordan kommer jeg over denne? Det skal siges, at mit program kører ellers perfekt, intet problem med outofbounds i arrays eller så noget.
Men den har åbenbart problemer med at håndterer store filer?
I et inbound callcenter, hvor identiteten på den, der ringer ind, skal bekræftes, kan kontrollen nu foregå i telefonkøen. Det understøtter fem centrale KPI'er for callcentre.
Jeg søgte på det problem herinde, der var også en skrev anbefalede
java -Xmx256m ...
men jeg har prøvet uden held, den store test fil er en min lærer har lavet. Det kan da ikke passe, hun skal lave en fil der ikke kan køre på en almindelig computer?
Men det problem der, det har ikke noget at gøre med, at der er fejl på ens program vel? Det er vel noget med ram og håndtering af data.
undskyld jeg forstår ikke helt din formulering, kan du utrykke det på en anden måde. "hvis en instans af X fylder 2000 bytes så allokerer du 2000 bytes fra heap"
Når du snakker om heap, mener du så den jeg har konstrueret til løsning af opgaven eller en helt anden heap i computeren?
Hvis du taler om min heap jeg har konstrueret, så har jeg lavet sådan en funktion i den:
if (size == heap.length) { Comparable[] newHeap = new Comparable[2*heap.length]; System.arraycopy(heap, 0, newHeap, 0, heap.length); heap = newHeap; }
Som fordobler hob'ens størrelse, hver gang elementerne fylder ud.
Dvs. jeg har lavet en dumkode, som går ind og gør dette? Jeg synes ellers min kode er skrevet ret effektivt :( og overholder de køretider min lærer har sat. Mine venner får ikke disse problemer. Hvad kan jeg gøre?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.