Fala pessoal, então… estou rodando um codigo aqui que lê a resposta de um servidor HTTP e o método que eu vou colar mais abaixo é acessado cerca de 300 vezes atraves de um for.
Anteriormente eu estava guardando alguns codigos HTML dessas 300+ respostas em um objeto em memoria, e estava dando o erro mencionado no titulo dessa mensagem… Achei que era isso e comecei a gravar esses HTMLs em um arquivo, não instanciando nada novo durante a executação do metodo abaixo…
Agora eu estou sem saber oque fazer, pois já rodei aquele Profiler TPTP junto com o projeto pra ver se eu tinha algum objeto sendo instanciado muitas vezes, já debuguei o código, já setei tudo quanto eh variável que poderia estar dando problema pra =null, já forcei o garbage collector e mesmo assim esse erro acontece la pelo for 130-140…
o erro é sempre nessa linha aqui
achei que poderia ser algo a ver com uma resposta do servidor muito grande e tal, mas mesmo manipulando as chamadas do for pra ir direto ao for 130-140(que sempre gera a excessão) nada acontece… soh se eu comecar a rodar o for desde o 0 que a excessão eh gerada…
E cada vez que o programa passa por essa linha, a quantidade de memoria utilizada pelo javaw.exe aumenta muito mesmo… e não abaixa depois, mesmo se eu der um =null na variavel…
Alguem tem ideia do q pode ser isso? Sera que essas strings que to criando não estão sendo limpadas pelo Garbage collector mesmo depois de ninguem mais apontar pra elas? Sei la to perdido… passei o dia em cima disso e não sai do lugar :(( alguem me da uma luz por favor!!!
public String lerResposta(HttpMethod metodo)
{
String responseBody = new String();
try
{
BufferedReader in = new BufferedReader(new InputStreamReader(metodo.getResponseBodyAsStream()));
StringBuffer out = new StringBuffer();
String linha;
while ((linha = in.readLine()) != null)
{
out.append(linha).append("\n");
}
-----------> responseBody = new String(out.toString().getBytes(),"UTF-8");
}
catch (UnsupportedEncodingException e) {
...... }
catch (IOException e) {
...... }
finally
{
metodo.releaseConnection();
}
return responseBody;
}
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Unknown Source)
at java.lang.String.<init>(Unknown Source)
at java.lang.StringBuffer.toString(Unknown Source)
at Requisicao.lerResposta

