Matar um objeto da memória

7 respostas
J

Eu estou desenvolvendo uma aplicação aonde tem um objeto que fica em loop infinito, este objeto instancia mais 2 objeto e um deles cria várias threads, sendo que, o usuário pode parar esta aplicação quando ele quiser.
Quando eu mato o primeiro objeto, teoricamente, os seu “filhos” não deveriam morrer? Se não como eu poderia parar esta aplicação?
Estou trabalhando dentro do tomcat6.

7 Respostas

BrunoBastosPJ

Se você não tem nenhuma referência a este objeto ele fica apto ao garbage collector, então teóricamente ele deveria ser finalizado junto com as demais instância que ele cria, caso somente ele esteja referenciando essas instâncias. No caso o garbage collector funciona automaticamente, mas você pode “tentar” chama-lo através do método System.gc().

Abs

J

Eu chamo o System.gc() e o programa ainda fica rodando, chamo também o Thread.currentThread().interrupt() e nada.

G

Você quer matar o processo ou matar um objeto ?

Lembrando que a chamada ao GC não garante que o objeto seja coletado.

J

Eu quero matar o objeto.

J

Tem como saber se já existe uma instância de um objeto rodando dentro do tomcat?

D

Tem sim…mas, o modo mais eficaz é com uma ferramenta de monitoramento…
pelo que vejo do seu problema, vc deve estar com um gargalo de memória em algum lugar…
a melhor ferramente que conheço para essa finalidade é o probe…
dá uma olhada:
http://www.lambdaprobe.org/d/index.htm

t+

F

Usa um ThreadGroup e pare suas Thread de uma maneira elegante!

Comece lendo o método stop do Thread
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html#stop()

Criado 21 de julho de 2008
Ultima resposta 28 de jul. de 2008
Respostas 7
Participantes 5