Minha dúvida é, quando ela faz um start com t.start, após o término do método RUN da thread, ela num libera todos recursos e a thread morre? ou não, precisasia chamar o destroy()?
O correto é pegar algum programa, como o jhat, e ver que objetos no seu programa estão consumindo mais memória.
S
Sagatiba
Tipo quantas vezes vc chama esse metodo ai?
Vc deve ta chamando milhoes de vezes num curto intervalo de tempo nem dando tempo pra Thread terminar o run dela.
Outra coisa, vc deu wait em algum lugar?
victorwss
A única liberação de memória que acontece é pelo coletor de lixo. Se a Thread mantinha referência a objetos e, ao morrer, estes objetos se tornam inalcançáveis, o coletor de lixo vai pegá-los. Se estes ainda continuam alcançáveis, o coletor de lixo não vai pegá-los.
Não use o método Thread.destroy(). Ele é depreciado, nunca foi implementado e provavelmente nunca vai ser implementado (se você chamá-lo, ele lança um Error dizendo que não foi implementado).
luistiagos
Não querendo ser chato mas ficaria melhor se vc deixasse assim:
Tipo quantas vezes vc chama esse metodo ai?
Vc deve ta chamando milhoes de vezes num curto intervalo de tempo nem dando tempo pra Thread terminar o run dela.
Outra coisa, vc deu wait em algum lugar?
Se esse for realmente o caso, dá uma olhada no java.concurrent.ExecutorService