Avatar billede tballe Nybegynder
17. december 2004 - 06:17 Der er 6 kommentarer og
1 løsning

Java heap space

Hej
Jeg har brug for at læse meget store tekstfiler ind for at arbejede med dem. (730 Mb.)

Problemet er, at når jeg bruger "BufferedReader" render jeg ind i at jeg java smider en "Out Of Memory Error". Jeg har prøvet at sætte heap space op med et lille program (javamem), som jeg fandt på nettet, men det virker ikke. Er der nogen der har et godt råd?
Jeg har en giga ram i maskinen. Eller skal jeg skrive mit program i et andet programmeringssprog?

Hilsen Tballe
Avatar billede arne_v Ekspert
17. december 2004 - 07:14 #1
heap space kan ikke sættes permanent op

det sætter man for hver kørsel med:

java -Xmx800m ...

(eksempel 800 MB)
Avatar billede arne_v Ekspert
17. december 2004 - 07:16 #2
Men hvis filen er 730 MB og du bruger BufferedReader, så har du
et problem, fordi BufferedReader bruger String som bruger char[] som
er unicode d.v.s. at 1 bogstav bliver til 2 byte.

2*730MB = 1.46GB

Hvis du derimod læser det ind som byte[] så bør lige akkurat kunne lade
sig gøre.
Avatar billede arne_v Ekspert
17. december 2004 - 07:22 #3
Du kan læse hele filen ind med InputStream/FileInputStream.

Eller du kan kigge lidt på java.nio og dens fil mapping funktionalitet.
Avatar billede tballe Nybegynder
17. december 2004 - 10:02 #4
Hej arne

Tak for dit svar, det er i øvrigt som byte jeg skal bruge det.
Jeg havde helt glemt at der er kommet en ny IO pakke.
Den vil jeg prøve at kikke på. Jeg har prøvet at skrive noget lignede i Perl, men her løb jeg også ind i problemer, dog med at sidefilforbruget dræbte scriptet efter det havde kørt i over en time.


hilsen Tballe
Avatar billede tballe Nybegynder
17. december 2004 - 10:03 #5
Tak for hjælpen

Hilsen Tballe
Avatar billede tballe Nybegynder
17. december 2004 - 10:04 #6
Hov jeg kan ikke se at du får dine points.
Avatar billede arne_v Ekspert
17. december 2004 - 10:16 #7
jeg skal ligge et svar
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