Problemas com tamanho de um StringBuffer

4 respostas
G

Pessoal,

Eu desenvolvi um servlet que é um validador de layout de arquivos. Esse servlet recebe um arquivo de entrada, valida e retorna um txt com o resultado de sua validação.

O problema é que existem arquivos que geram uma saída muito grande, tão grande a ponto de tornar uma StringBuffer inutilizável (é o que eu acredito que esteja acontecendo).

Por que eu acredito que seja o tamanho da StringBuffer?

1º Quando a saída é menor tudo funciona perfeitamente;

2º Como não tenho como depurar, coloquei alguns “prints” para acompanhar o processo e ele está parando exatamente no momento em que tento dar um System.out.println do StringBuffer preenchido;

3º Estou tomando a mensagem “null java.lang.OutOfMemoryError”
:?: :?: :?:

:idea:Sugestões???

4 Respostas

T

Por que é que você precisa armazenar tudo em uma StringBuffer?
Se ela for muito grande, realmente você vai ter problemas.
Dependendo do tipo de validação e o que você vai fazer, você não poderia já escrever a saída diretamente no OutputStream da servlet, ou ler a entrada diretamente sem armazená-la em uma StringBuffer?

G

Para escrever no outputstream da servlet terei que mudar todo o meu esquema, pois para gerar a saída eu utilizo de uma framework que a empresa adiquiriu…

De qualquer forma, agradeço a dica… Estou fazendo um teste seguimentando a StringBuffer em partes menores, se não der certo vou implementar sua dica…

Obrigado.

T

Só para ter uma idéia, se um arquivo tiver 1MB, ele irá ocupar um pouco mais de 2MB porque cada caracter ASCII (1 byte) é convertido para um Unicode (2 bytes) em memória.

chun

gandja99:
Pessoal,

Eu desenvolvi um servlet que é um validador de layout de arquivos. Esse servlet recebe um arquivo de entrada, valida e retorna um txt com o resultado de sua validação.

O problema é que existem arquivos que geram uma saída muito grande, tão grande a ponto de tornar uma StringBuffer inutilizável (é o que eu acredito que esteja acontecendo).

Por que eu acredito que seja o tamanho da StringBuffer?

1º Quando a saída é menor tudo funciona perfeitamente;

2º Como não tenho como depurar, coloquei alguns “prints” para acompanhar o processo e ele está parando exatamente no momento em que tento dar um System.out.println do StringBuffer preenchido;

3º Estou tomando a mensagem “null java.lang.OutOfMemoryError”
:?: :?: :?:

:idea:Sugestões???

Não utilize StringBuffer… use StringBuilder… é mais rapido.

Criado 26 de janeiro de 2007
Ultima resposta 26 de jan. de 2007
Respostas 4
Participantes 3