Avatar billede JakobS Praktikant
22. september 2010 - 09:22 Der er 6 kommentarer og
1 løsning

java.lang.outofmemoryerror: Java heap space

Hej

Jeg er komplet novice til java og var som sådan heller ikke klar over at jeg brugte det i min kode (jeg koder i matlab og et af de programmer jeg kalder må således bruge det). Anyway, jeg kører en løkke med omkring 100000 iterationer og har ikke haft problemer med denne før, men idag fik jeg en "java.lang.outofmemoryerror: Java heap space"-fejl.

Efter at google lidt rundt er jeg med på at der ikke er allokeret nok plads i java til at håndtere min opgave. Da jeg dog har kørt meget større loops med denne kode er mit første spørgsmål: Kan dette blot skyldes at computeren skal rebootes? (Den har stået og kørt loops med disse 100000-150000 iterationer 2 dage i træk (hver udregning tager ca 8 timer).

Hvis dette ikke er løsningen, så er der vel altid muligheden for at gøre følgende:
java -Xms32m -Xmx128m
men da jeg aldrig har rørt java direkte før er jeg ikke klar over hvor jeg skal skrive dette. Alle hjemmesider skriver bare at man skal skrive det... jojo... men hvor?
Desuden forudsætter det at man ved hvor meget man vil skrue memory'en op, og dermed også at man ved hvor meget den VAR, så er der en eller anden kommando der kan afklare hvad den nuværende heap size er?

Spørgsmålet er vel som sådan ikke svært, men jeg vil meget gerne have det løst hurtigt, så den får lige 60 point!
Avatar billede arne_v Ekspert
22. september 2010 - 14:51 #1
Xms er den heap size din app faar ved opstart
Xmx er den maksimale heap size din app kan faa

heap size = plads til data i din app

du skal enten starte din app command line med:

java -Xmx512m .......

eller angive det i shortcut.
Avatar billede JakobS Praktikant
23. september 2010 - 10:37 #2
Men hvordan ved jeg hvor meget jeg kan skrive? Og  hvordan ser man hvor meget man har som default? Jeg har prøvet at google begge dele men jeg synes alle sider har skrevet forskellige default værdier og den side jeg fandt der talte om hvor meget man bør sætte Xmx til skrev at man ikke måtte overskride den værdi der står som "ledig fysisk hukommelse" i windows' jobliste. MEN når jeg kører mit program falder denne hurtigt til et sted mellem 0 og 20.
Avatar billede arne_v Ekspert
23. september 2010 - 14:58 #3
Den maksimale stoerrelse er JVM og OS specifik, men for 32 bit SUN Java paa 32 bit Windows er det ca. 1.7 GB (proev -Xmx1650m).

Default er 64 MB paa samme config.
Avatar billede arne_v Ekspert
23. september 2010 - 14:59 #4
Heap space er virtuel hukommelse ikke fysisk hukommelse, saa du saetter det bare til det du har brug for.
Avatar billede JakobS Praktikant
07. oktober 2010 - 00:44 #5
Jeg gik udenom problemet (for nu) ved at begrænse antallet af iterationer. Men mange tak for dine svar. hvordan er det at jeg giver dig de 60 point? Mangler lidt en "svar accepteret" knap et sted. :)
Avatar billede arne_v Ekspert
07. oktober 2010 - 00:46 #6
jeg smider et svar som du kan acceptere
Avatar billede JakobS Praktikant
22. oktober 2010 - 01:30 #7
Alletiders! 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