Newsgroup: it.comp.java
Titolo: java.lang.OutOfMemoryError ...azz!

Brevemente, esamino un file di testo usando una classe autogenerata con
JFlex all'interno della mia applicazione.
Ma per file troppo grandi, dopo un po di "Frullaggio" si ferma e mi dice
OutOfMemoryError. (forse xkè uso male io la classe o forse per limitazioni
dello scanner di JFlex?)
Come migliorare la situazione? se dopo un po di caratteri scannarizzati mi
fermassi, "immagazzinerei" l'output per poi continuare, la situazione
migliorerebbe?
Cerco consiglio per nn limitare la simensione dei file esaminabili!!
Grazie molte a chiunque vorrà rispondermi!

 Come migliorare la situazione?
Non usare classi autogenerate e/o guarda come cavolo funziona la cosa,
bufferizza, leggi il file un pezzo alla volta...
Davide

Grazie, terrň da conto i consigli!
MA nessuno ha mai usato JFlex? Non sa se ha limitazioni di questo genere?!?
(Almeno mi tolgo 1 dubbio)
Hi!

 ha scritto nel messaggio
news:ah3udu$bjo$1...@nntp.weblinea.it...

Quale che sia il codice Java, autogenerato o autoprodotto, dovra' pur
caricare in memoria il testo....:
quindi usera' perlomeno tanta memoria quanta ne occupa tutto l'insieme dei
char che formano il testo.
Secondo me un modo che hai e' di caricare a blocchi il testo ed elaborarlo
man mano! Se pero' lo immagazzini
non vedo vantaggi di memoria: tanti byte sono e tanti byte rimangono. A meno
che tu non zippi i dati in memoria o fai cose particolari.
Qualcuno ha parlato di problemi dovuti alla ricorsione; in quel caso pero'
si hanno problemi con lo stack in memoria
ossia con la zona di memoria riservata all'allocazione delle variabili
locali, dei parametri e dei ritorni delle funzioni.
Eppoi in quel caso dovresti ottenere una Exception del tipo ...
StackOverflow ....!
Oppure puoi semplicemente dire alla JVM di allocare piu' memoria, prova a
scrivere: java -X
ottieni:
D:\>java -X
    -Xmixed           mixed mode execution (default)
    -Xint             interpreted mode execution only
    -Xbootclasspath:<directories and zip/jar files separated by ;>
                      set search path for bootstrap classes and resources
    -Xbootclasspath/a:<directories and zip/jar files separated by ;>
                      append to end of bootstrap class path
    -Xbootclasspath/p:<directories and zip/jar files separated by ;>
                      prepend in front of bootstrap class path
    -Xnoclassgc       disable class garbage collection
    -Xincgc           enable incremental garbage collection
    -Xbatch           disable background compilation
    -Xms<size>        set initial Java heap size
    -Xmx<size>        set maximum Java heap size
    -Xss<size>        set java thread stack size
    -Xprof            output cpu profiling data
    -Xrunhprof[:help]|[:<option>=<value>, ...]
                      perform JVMPI heap, cpu, or monitor profiling
    -Xdebug           enable remote debugging
    -Xfuture          enable strictest checks, anticipating future default
    -Xrs              reduce use of OS signals by Java/VM (see
documentation)
The -X options are non-standard and subject to change without notice.
se lanci il tuo programma cosi' :
java -Xms32m -Xmx512m miaClasse
significa che consenti di utilizzare un heap di massimo 512Mb. Ora se
continui a caricare testo la JVM si mangia memoria
fino a 512Mb massimi....poi va lo stesso in OutOfMemory! Non bisogna
pretendere di piu'....
Siete d'accordo con la mia interpretazione
Ciao
GIANLUCA