Consumo de memória/liberação de objetos em memória

6 respostas
saviobarr

Olá,
Estou fazendo uma requisição Http que busca dados no banco, popula um objeto, retorna para Action, e a Action coloca num request.setAttribute para ser exibido na página. O problema é que mesmo depois da resposta da requisição, o objeto recuperado continua em memória. Podem me ajudar?

Sávio

6 Respostas

pablosaraiva

Seta a variável que aponta para o tal objeto para null.

Se ninguém referenciar um objeto, eventualmente ele será destruído pelo garbage collector.

saviobarr

pablosaraiva:
Seta a variável que aponta para o tal objeto para null.

Se ninguém referenciar um objeto, eventualmente ele será destruído pelo garbage collector.


Se eu setar pra null, os dados não serão exibidos pro usuário… o que preciso que após o response esse objeto seja liberado. o GC não tá fazendo isso legal… to analisando no JProfiler, e o objeto continua lá após a resposta para o usuário, e sempre que é feita nova requisição, mais instâncias são criadas, sem que as instâncias da requisição anterior tenham morrido, ou seja: a cada requisição aumenta o número de instâncias do mesmo objeto, até que chega num momento em que isso derruba o servidor.

[]´s

Sávio

J

saviobarr:
pablosaraiva:
Seta a variável que aponta para o tal objeto para null.

Se ninguém referenciar um objeto, eventualmente ele será destruído pelo garbage collector.


Se eu setar pra null, os dados não serão exibidos pro usuário… o que preciso que após o response esse objeto seja liberado. o GC não tá fazendo isso legal… to analisando no JProfiler, e o objeto continua lá após a resposta para o usuário, e sempre que é feita nova requisição, mais instâncias são criadas, sem que as instâncias da requisição anterior tenham morrido, ou seja: a cada requisição aumenta o número de instâncias do mesmo objeto, até que chega num momento em que isso derruba o servidor.

[]´s

Sávio

O que o pablosaraiva quis dizer, é para você setar a variável para null após o response.

saviobarr

juliocbq:
saviobarr:
pablosaraiva:
Seta a variável que aponta para o tal objeto para null.

Se ninguém referenciar um objeto, eventualmente ele será destruído pelo garbage collector.


Se eu setar pra null, os dados não serão exibidos pro usuário… o que preciso que após o response esse objeto seja liberado. o GC não tá fazendo isso legal… to analisando no JProfiler, e o objeto continua lá após a resposta para o usuário, e sempre que é feita nova requisição, mais instâncias são criadas, sem que as instâncias da requisição anterior tenham morrido, ou seja: a cada requisição aumenta o número de instâncias do mesmo objeto, até que chega num momento em que isso derruba o servidor.

[]´s

Sávio

O que o pablosaraiva quis dizer, é para você setar a variável para null após o response.

Eu não posso fazer nada depois do return…
Seria algo do tipo

return mapping.findForward(“sucesso”);
obj = null;

Isso não é possível…

[]´s

Sávio

pablosaraiva

Posta parte do código pra gente dar uma olhada.

Provavelmente algum lugar do código ainda está mantendo referência a esses objetos sem deixar eles serem coletados.

J

saviobarr:
juliocbq:
saviobarr:
pablosaraiva:
Seta a variável que aponta para o tal objeto para null.

Se ninguém referenciar um objeto, eventualmente ele será destruído pelo garbage collector.


Se eu setar pra null, os dados não serão exibidos pro usuário… o que preciso que após o response esse objeto seja liberado. o GC não tá fazendo isso legal… to analisando no JProfiler, e o objeto continua lá após a resposta para o usuário, e sempre que é feita nova requisição, mais instâncias são criadas, sem que as instâncias da requisição anterior tenham morrido, ou seja: a cada requisição aumenta o número de instâncias do mesmo objeto, até que chega num momento em que isso derruba o servidor.

[]´s

Sávio

O que o pablosaraiva quis dizer, é para você setar a variável para null após o response.

Eu não posso fazer nada depois do return…
Seria algo do tipo

return mapping.findForward(“sucesso”);
obj = null;

Isso não é possível…

[]´s

Sávio

Vc tem que passar null para o objeto que executa essa função.

x = obj. mapping.findForward("sucesso");
 obj = null;

isso resolve seu problema.

Criado 3 de dezembro de 2009
Ultima resposta 4 de dez. de 2009
Respostas 6
Participantes 3