Ohjelma antaa tuon ko. virheilmoituksen, kun lisään dataa ArrayList<String>-tietorakenteeseen. Ohjelma, jossa tämä tulee lukee dataa tekstitiedostoista ja sitten yhdistelee ja lajittelee tämän datan. Ko. data tullaan sitten kirjoittamaan tekstitiedostoon ko. ArrayListista ja siirtämään edelleen R-ohjelmaan. Olen googlaillut tuota ja tuntuu jotenkin ainakin tämän perusteella liittyvän jotenkin roskienkeräämiseen.
Miten tuosta pääsisi eroon?
Voit kokeilla lisätä muistin määrää (muistaakseni lipulla -Xmx
tjsp.). Näin sanotaana Oraclen sivuilla:
https://docs.oracle.com/javase/8/docs/technotes/
Exception in thread thread_name: java.lang.OutOfMemoryError: GC Overhead limit exceeded
Cause: The detail message "GC overhead limit exceeded" indicates that the garbage collector is running all the time and Java program is making very slow progress. After a garbage collection, if the Java process is spending more than approximately 98% of its time doing garbage collection and if it is recovering less than 2% of the heap and has been doing so far the last 5 (compile time constant) consecutive garbage collections, then a java.lang.OutOfMemoryError is thrown. This exception is typically thrown because the amount of live data barely fits into the Java heap having little free space for new allocations.
Action: Increase the heap size. The java.lang.OutOfMemoryError exception for GC Overhead limit exceeded can be turned off with the command line flag -XX:-UseGCOverheadLimit.
fergusq kirjoitti:
(21.07.2016 14:37:32): Voit kokeilla lisätä muistin määrää...
Tein tämän mukaan. Sain seuraavan virheilmoituksen:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Unknown Source) at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source) at java.lang.AbstractStringBuilder.ensureCapacityInternal(Unknown Source) at java.lang.AbstractStringBuilder.append(Unknown Source) at java.lang.StringBuilder.append(Unknown Source)
Lisäys: En tiedä, laitoinko tuon tekstin -XX:-UseGCOverheadLimit oikeaan paikkaan. Toimin tämän ohjeen mukaan ja laitoin kohtaan Run->Run Configurations ja sieltä Arguments ja Program.
Lue sitten se ohje vielä uudestaan: laitoit nyt kyseisen virheilmoituksen pois päältä, joten saat toisenlaisen ilmoituksen. Varsinainen ratkaisu oli kuitenkin muistimäärän lisääminen -Xmx-lipulla, esim. -Xmx2048M. Jos koneesi muisti ei riitä, kannattaa miettiä datan käsittelyyn muita keinoja.
Testattu myös kohtaa VM Arguments
Metabolix kirjoitti:
(21.07.2016 16:51:27): Lue sitten se ohje vielä uudestaan: laitoit nyt...
Onko tässä jotain ylärajaa paljonko voi laittaa vai onko maksimi koneen muistin määrä?
Parametriksi sinänsä voi antaa isonkin luvun, mutta tietenkin käytännössä muisti silti aikanaan loppuu. Käytännön muistimäärää rajoittaa koneen keskusmuisti ja sivutustiedoston (page file, swap) koko.
Aihe on jo aika vanha, joten et voi enää vastata siihen.