Tavoitteenani on käsitellä suurta määrää numerodataa. Tein ohjelman, joka toimii oikein, antaa haluamanlaisiani tulostuksia, ja kun yritän tulostaa tiedostoon tulostetta, saan toistuvasti Out of memory, Java heap space -errorin. Onko kyse siitä, että tietokoneessani on liian vähän tehoja suorittamaan kyseistä ohjelmaa?
Testasin ohjelmaa pienemmällä määrällä dataa, ja silloin se toimi oikein. Siitä vakuuttuneena yritin vetää maksimit, mutta käsiteltävä data - määrä lienee liian suuri?
Testasin ohjelmaa pienemmällä määrällä dataa, ja silloin se toimi oikein. Siitä vakuuttuneena yritin vetää maksimit, mutta käsiteltävä data - määrä lienee liian suuri?
Vastaukset 2
Vanhimmat
Kyseinen virhe ei johdu tietokoneesi muistin loppumisesta vaan Javan virtuaalikoneen muistin loppumisesta. Javan maksimi heap muistin saa määritettyä Xmx parametrilla, esim. 2 gigaan: "java -Xmx2048m".
Ensin kuitenkin kannattaa miettiä pidätkö tietoa järkevällä tavalla muistissa. Tuhlaatko tai vuodatko muistia jotenkin? Oletusmäärän muistia pitäisi riittää hyvin pitkälle.
Lisähuomiona vielä että 32 bittisessä Javassa maxheapsize raja meni jossain 1-2 gigan välillä. 64 bittisessä Javassa saa paljon tätäkin suurempia. Mutta kuten mikuzorg sanoikin, ohjelmassa on ehkä jo jotain rakenteellista vikaa jos noin paljon tarvitsee muistia :)