Avatar billede fadme Nybegynder
18. december 2000 - 12:05 Der er 2 kommentarer og
2 løsninger

OutOfMemory

I forbindelse med en webcrawler som jeg har lavet, får jeg en fejlmeddelelse, der ser ca. sådan ud.

OutOfMemoryException  (No Stack Trace available)

Jeg er klar over at jeg opbruger den ledige plads i javaVirtualMachine og at der ikke er mere der kan garbage collectes, men jeg fatter sgu ikke helt hvorfor.
Programmet kører rekursivt og jeg kører med max 20 tråde. Og selvom jeg sætter antallet af tråde ned, kommer fejlmeddelelsen alligevel.

Nogen der har oplevet noget lignende og evt. har forslag til hvordan dette kan undgås.?



 
Avatar billede disky Nybegynder
18. december 2000 - 12:07 #1
når du kører rekursivt, bruger du nemt enorme mængder hukommelse.

Hvor dybt går du ned rent rekursivt ?

Sæt evt. en begrænsning på hvor meget data hver enkelt tråd kan gemme.
Avatar billede mpultz Nybegynder
18. december 2000 - 13:34 #2
Hvis du ellers har RAM\'en til det så kan du fortælle JVM\'en hvor meget hukommelse den må bruge. F.eks. java -Xmx128M MyApp giver MyApp applikationen rettigheder til at benytte 128 MB. Default værdi er vidst nok 16M.
Avatar billede lbhansen Nybegynder
18. december 2000 - 21:04 #3
Når du kører rekursivt, i ordets brede forstand, at en metode kalder rekursivt en anden, så hænger der stadig referencer til de gamle objekter, og kan derfor ikke collectes før metoden er afsluttet.
Avatar billede fadme Nybegynder
18. januar 2001 - 13:24 #4
Problemet var at garbagecollectoren aldrig rigtig fik lov at arbejde. Jeg klarede det ved at give lov til at bruge mere hukommelse dom mpultz skrev, og samtidig ligge en lille forsinkelse ind med tilfældige mellemrum, hvilket gav plads il at garbagecollectoren kunne arbejde.

Tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester