de encerramento do aplicativo.Chama todos os ganchos de saida instalados pelo aplicativo.Executa a limpeza necessaria da JVM. O encerramento e identico ao encerramento iniciado por uma chamada para o metodo System.exit(). Outros sinais utilizados pela JVM destinam-se a propositos de controle interno e nao causam a sua terminacao. O unico sinal de controle de interesse e SIGQUIT, o que faz com que um Javadump seja gerado. Sinais Utilizados pela JVM A Tabela 1 a seguir mostra os sinais utilizados pela JVM. Os sinais sao agrupados na tabela por tipo ou uso, como se segue: Excecoes: O sistema operacional faz surgir sincronicamente um sinal de excecao apropriado sempre que uma condicao fatal ocorre. Erro: a JVM fara surgir um SIGABRT caso detecte uma condicao da qual ela nao pode recuperar-se. Interrupcoes: Os sinais de interrupcao surgem de maneira assincrona, de fora de um processo JVM, para solicitar encerramento. Controles: Outros sinais sao utilizados pela JVM para propositos de controle. Tabela 1. Sinais Utilizados pela JVM Nome do Sinal Tipo de Sinal Descricao Desativado pelo -Xrs SIGBUS Excecao Acesso incorreto a memoria (alinhamento incorreto de dados) Sim SIGSEGV Excecao Acesso incorreto a memoria (gravar para memoria inacessivel) Sim SIGILL Excecao Instrucao invalida (tentativa de chamar uma instrucao de maquina desconhecida) Nao SIGFPE Excecao Excecao de ponto flutuante (dividir por zero) Sim SIGABRT Erro Finalizacao anormal. A JVM emite esse sinal sempre que detecta uma falha da JVM. Sim SIGINT Interrupcao Atencao interativa (CTRL-C). A JVM sai normalmente. Sim SIGTERM Interrupcao Pedido de finalizacao. A JVM saira normalmente. Sim SIGHUP Interrupcao Interromper. A JVM sai normalmente. Sim SIGQUIT Controle Um sinal de saida de um terminal. A JVM utiliza isso para conseguir Javadumps. Sim |SIGTRAP (5) |Controle |Utilizada pelo JIT. |Sim |__SIGRTMAX - 2 |Controle |Utilizada pelo SDK. |Nao |SIGCHLD |Controle |Utilizada pelo SDK para controle interno. |Nao Utilize a opcao -Xrs (reduz uso de sinais) para evitar que a JVM manipule a maior parte dos sinais. Para obter informacoes adicionais, consulte a pagina do ativador de aplicativos Java da Sun em http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/java.html. Os sinais 1 (SIGHUP), 2 (SIGINT), 4 (SIGILL), 7 (SIGBUS), 8 (SIGFPE), 11 (SIGSEGV) e 15 (SIGTERM) nos encadeamentos da JVM fazem com que a JVM seja encerrada. Portanto, uma rotina de tratamento de sinais de aplicativo nao deve tentar uma recuperacao a partir desses sinais, a menos que a JVM nao seja mais necessaria. Vinculando um Driver de Codigo Nativo a Biblioteca de Cadeia de Sinais O Runtime Environment contem um recurso de encadeamento de sinais. A cadeia de sinais permite que a JVM interopere mais eficazmente com o codigo nativo que instala suas proprias rotinas de tratamento de sinais. O recurso de encadeamento de sinais permite que um aplicativo estabeleca um vinculo e carregue a biblioteca compartilhada libjsig.so antes das bibliotecas do sistema. A biblioteca libjsig.so assegura que as chamadas como signal(), sigset() e sigaction() sejam interceptadas para que suas rotinas de tratamento nao substituam as rotinas de tratamento de sinais da JVM. Em vez disso, essas chamadas salvam as novas rotinas de tratamento de sinais ou as "encadeia" ocultas