Ciao a tutti....sto facendo un piccolo applicativo che deve fare molte scrittutre su un file di log....soltanto che ci mette più tempo a fare queste scritture (molto frequenti) sul file di log che a eseguire tutta l'applicazione che è la cosa più importante....esempio con scrittura del log ci mette 40 secondi, senza passa a 10 secondi....utilizzo già un BufferedOutputStream per il file di log qundi quello dovrebbe già bufferizzare....però ho notato che utilizzando uno StringBuffer si velocizza molto....solo 10 secondi in più (quindi sui 20 secondi per tutta l'esecuzione)...in pratica con lo StringBuffer ogni volta appendo il messaggio da inserire del log e alle fine dell'applicativo faccio un unica write in cui scrivo tutto il contenuto dello StringBuffer(prima facevo tipo 10000 write e questo logicamente rallentava molto)....
private static StringBuffer logBuffer = new StringBuffer();
Il mio dubbio è questo: quanto è la dimensione massima che può avere uno StringBuffer??? mi serve saperlo perchè a volte ho dei file di log molto grossi...e non vorrei quando farò dei test più importanti che mi si blocchi tutto solo perchè ho superato la dimensione massima dello StringBuffer....avevo pensato di mettere un controllo sulla dimensione del buffer...tipo che ogni volta che la length del buffer è > 500000 scrive il log e svuoto il buffer....però se sapessi la dimensione massima che può avere lo svuoterei ogni volta poco prima che si riempia (esempio se la dim max è 100 lo svuoto quando length = 99)...
Grazie mille,ciao

Rispondi quotando