Agente morre inexplicavelmente durante execução do código

6 respostas
E

Boa noite senhores(as)!

Para que saibam, sou iniciante em Java e estou trabalhando com um aplicativo multiagentes e multithreads. Ahhh… E uso o Netbeans versão 6.7.1.

Resumidamente, estou com o seguinte problema:

Tenho 2 agentes diferentes, sendo executados em threads diferentes. Repentinamente um deles pára indevidamente. Pude constatar a parada através de um breakpoint colocado no método finalize do mesmo.

Bem, ao parar no breakpoint, verifiquei a “Pilha de Chamadas” e pude constatar que a chamada do método finalize é proveniente de classes internas do próprio Java.

Utilizei também o recurso de “Hierarquia de Chamadas” sobre o método finalize, porém, não me foi retornado nada, ou seja, nenhum outro método do software faz chamada ao método finalize.

O que me levou a crer que talvez seja o próprio Garbage Colector da linguagem que está eliminando o Agente.

Gostaria de uma ajuda, dos senhores experientes na linguagem, no seguinte:

[list]Como proceder nesta situação, pois, o código é extenso e por serem várias threads rodando “simultaneamente” não é tão simples de depurar![/list]
[list]Se nenhum método criado no software chama diretamente o método finalize, quais outros motivos poderiam levar a linguagem a promover a finalização do agente?[/list]

Se alguém puder dar uma luz neste problema, serei muitíssimo grato!

Desde já agradeço a todos pela atenção dispensada,

Edwar Saliba Júnior

6 Respostas

marvinla

Olá!

Verifique se o loop principal da sua thread foi encerrado, ou por um erro de lógica ou alguma exceção que foi lançada e você não capturou.

Abraços

maior_abandonado

verifique se o método run da sua thread chega ao final (se você quer que sua thread não finalize, isso não pode acontecer)

walacy

gostei do título da dúvida…

fiquei tentando imaginar o que seria um “Agente” que morreu executando um código… :XD:

nisso que dá vir pro GUJ às 8 da manhã… hehehe

Felagund

walacy:
gostei do título da dúvida…

fiquei tentando imaginar o que seria um “Agente” que morreu executando um código… :XD:

nisso que dá vir pro GUJ às 8 da manhã… hehehe

Poís é até achei que era noticia :stuck_out_tongue:

L

Bom dia.

Realmente muito interessante o titulo do tópico.

Quanto a dúvida, quem chama o método finalize de uma classe é o garbage collector, então seu agente ficou elegivel para a coleção de lixo. Verifique se todas as referencias para seu agente não foram perdidas.

Carlos

maior_abandonado

Felagund:
walacy:
gostei do título da dúvida…

fiquei tentando imaginar o que seria um “Agente” que morreu executando um código… :XD:

nisso que dá vir pro GUJ às 8 da manhã… hehehe

Poís é até achei que era noticia :P

cheguei a pensar que fosse algum tipo de piada que ele recebeu uma TchuckNorrisException na cara… :lol:

Criado 23 de março de 2010
Ultima resposta 24 de mar. de 2010
Respostas 6
Participantes 6