0xb binary options(3)
Opções de linha de comando do Java HotSpot VM A opção - XX: HeapDumpOnOutOfMemoryError Essa opção informa à VM Java HotSpot para gerar um despejo de pilha quando uma alocação do heap Java ou da geração permanente não pode ser satisfeita. Não há sobrecarga na execução com esta opção, portanto, pode ser útil para sistemas de produção onde a exceção OutOfMemoryError leva muito tempo para a superfície. Você também pode especificar essa opção em tempo de execução com a guia MBeans no utilitário JConsole. O despejo de pilha está no formato binário HPROF e, portanto, pode ser analisado usando quaisquer ferramentas que podem importar este formato. Por exemplo, a ferramenta jhat pode ser usada para fazer uma análise rudimentar do dump. Para obter mais informações sobre a ferramenta jhat, consulte O Utilitário jhat. O exemplo D-1 mostra o resultado da falta de memória com este conjunto de sinalizadores. Exemplo D-1 Exemplo de código para a falta de memória O ConsumeHeap preenche o heap Java e fica sem memória. Quando a exceção java. lang. OutOfMemoryError é lançada, um arquivo de despejo de heap é criado. Neste caso, o arquivo é 507 MB e é criado com o nome javapid2262.hprof no diretório atual. Por padrão, o dump heap é criado em um arquivo chamado javapid pid. hprof no diretório de trabalho da VM, como no exemplo acima. Você pode especificar um nome ou diretório de arquivo alternativo com a opção - XX: HeapDumpPath. Por exemplo - XX: HeapDumpPath / disk2 / dumps fará com que o despejo do heap seja gerado no diretório / disk2 / dumps. A opção - XX: OnError Quando ocorre um erro fatal, a VM Java HotSpot pode opcionalmente executar um script ou comando fornecido pelo usuário. O script ou comando é especificado usando a opção de linha de comando - XX: OnError string, onde string é um único comando ou uma lista de comandos separados por ponto e vírgula. Dentro dessa seqüência, todas as ocorrências de p são substituídas pelo PID atual e todas as ocorrências de são substituídas por um único. Os exemplos a seguir demonstram como essa opção pode ser usada ao lançar um aplicativo Java chamado MyApp com o lançador java. Java - XX: OnErrorpmap p MyApp No sistema operacional Oracle Solaris, o comando pmap exibe informações sobre o espaço de endereçamento de um processo. No exemplo acima, se ocorrer um erro fatal, o comando pmap é executado para exibir o espaço de endereço do processo atual. Java - XX: OnErrorcat hserrpidp. log mail supportacme MyApp No exemplo acima, o conteúdo do arquivo de log de erro fatal é enviado para um alias de suporte quando um erro fatal é encontrado. Java - XX: OnErrorgcore p dbx - p MyApp No sistema operacional Oracle Solaris, o comando gcore cria uma imagem principal do processo especificado eo comando dbx inicia o depurador. No exemplo acima, o comando gcore é executado para criar a imagem principal do processo atual eo depurador é iniciado para anexar ao processo quando um erro inesperado é encontrado. Java - XX: OnErrorgdb - p MyApp No Linux o comando gdb inicia o depurador. No exemplo acima, o depurador gdb é iniciado e anexado ao processo atual quando um erro inesperado é encontrado. Java - XX: OnErroruserdump. exe p MyApp No Windows, o utilitário userdump. exe cria um despejo de falha do processo especificado. O utilitário não é fornecido com o Windows e deve ser baixado do site da Microsoft como parte do pacote Microsoft OEM Support Tools. No exemplo acima, o utilitário userdump. exe é executado para criar um despejo de núcleo do processo atual no caso de um erro fatal. O exemplo assume que o caminho para o utilitário userdump. exe está definido na variável PATH. Se você não tiver o utilitário userdump. exe instalado, o depurador do Dr. Watson pode ser configurado como o depurador post-mortem para que um despejo de falha é criado quando um erro inesperado é encontrado. Para obter mais informações sobre a criação de dumps de bloqueio no Windows, consulte Coleta de Crash Dumps no Windows. A opção - XX: ShowMessageBoxOnError Quando essa opção é definida e um erro fatal é encontrado, a VM HotSpot exibirá informações sobre o erro fatal e solicitará ao usuário para especificar se o depurador nativo deve ser iniciado. No caso dos sistemas operacionais Oracle Solaris e Linux, a saída eo prompt são enviados para o console do aplicativo (entrada padrão e saída padrão). No caso do Windows, uma caixa de mensagem do Windows aparece. O Exemplo D-2 mostra um erro fatal encontrado em um sistema Linux. Exemplo D-2 Erro fatal em um sistema Linux Neste caso ocorreu um erro SIGSEGV eo usuário é solicitado a especificar se o depurador gdb deve ser iniciado para anexar ao processo. Se o usuário digitar y ou yes. Gdb será lançado (assumindo que ele está definido na variável PATH). No sistema operacional Oracle Solaris, a mensagem é semelhante à anterior, exceto que o usuário é solicitado a iniciar o depurador dbx. No Windows uma caixa de mensagem é exibida. Se o usuário clicar em Sim. A VM tentará iniciar o depurador padrão. Este depurador é configurado por uma definição de registo que é descrita em Collect Crash Dumps no Windows. Se o Microsoft Visual Studio estiver instalado, o depurador padrão normalmente é configurado para ser msdev. exe. No exemplo acima a saída inclui o PID (pid10791) e também o ID da thread (tid1026). Se o depurador for iniciado, um dos passos iniciais no depurador poderá ser para seleccionar o thread e obter o respectivo rastreio de pilha. Como o processo está aguardando uma resposta, é possível usar outras ferramentas para obter um despejo de falha ou consultar o estado do processo. No sistema operacional Oracle Solaris, por exemplo, um despejo de núcleo pode ser obtido usando o utilitário gcore. No Windows, um despejo de memória do Dr. Watson pode ser obtido usando os programas userdump ou windbg. O utilitário windbg está incluído no Microsofts Debugging Tools para Windows e é descrito em Collect Crash Dumps no Windows. Em windbg. Selecione a opção de menu Anexar a um processo, que exibe a lista de processos e prompts para o PID. A VM HotSpot exibe uma caixa de mensagem, que inclui o PID. Uma vez selecionado o comando. dump / f pode ser usado para forçar um despejo de memória. A Figura D-1 é um exemplo de despejo de falha criado em um arquivo chamado crash. dump. Figura D-1 Exemplo de um Crash Dump Criado por windbg Em geral, a opção - XX: ShowMessageBoxOnError é mais útil em um ambiente de desenvolvimento onde as ferramentas do depurador estão disponíveis. A opção - XX: OnError é mais adequada para ambientes de produção em que uma seqüência fixa de comandos ou scripts é executada quando um erro fatal é encontrado. Outras Opções - XX Várias outras opções de linha de comando - XX podem ser úteis na solução de problemas: Esta opção pode ser usada para especificar um comando ou script a ser executado quando uma exceção OutOfMemoryError é lançada. Essa opção pode ser usada para especificar um local para o arquivo de log de erro fatal, consulte Localização do Registro de Erros Fatais. Esta opção pode ser usada para especificar um local para o despejo de pilha, consulte a opção - XX: HeapDumpOnOutOfMemoryError. Essa opção pode ser usada para imprimir todos os sinalizadores de linha de comando VM, consulte Coletar dados para um relatório de erros. Essa opção pode ser usada para fazer com que o manipulador ControlBreak para imprimir uma lista de bloqueios simultâneos pertencentes a cada thread. Essa opção pode ser usada para fazer com que o manipulador ControlBreak para imprimir um heap histograma. - XX: PrintGCDetails e - XX: PrintGCTimeStamps Estas opções podem ser usadas para imprimir informações detalhadas sobre coleta de lixo, consulte A opção - verbose: gc. No sistema operacional Oracle Solaris 8 e 9, esta opção pode ser usada para instruir a VM HotSpot a usar sinais alternativos para SIGUSR1 e SIGUSR2. Consulte Manipular Sinais no Oracle Solaris e Linux. - XX: UseConcMarkSweepGC. - XX: UseSerialGC e - XX: UseParallelGC Essas opções podem ser usadas para especificar a política de coleta de lixo a ser usada, consulte Trabalhando em torno de falhas durante a coleta de lixo. Copyright 169 1993, 2017, Oracle e / ou suas afiliadas. Todos os direitos reservados. Hex to Decimal Converter Hexadecimal são números com base 16. Ele consiste em um conjunto de 16 números onde 0-9 são representados como 0,1,2,3,4,5,6,7,8,9 e 10 - 15 são representados como A, B, C, D, E, F. Ele não tem símbolos como 10 ou 11, por isso tomar letras como símbolo do alfabeto Inglês. Decimal é o sistema de dez números de dez base e Binário é um sistema de números de base 2 (0s e 1s). Use Hex to Decimal Converter para converter hexadecimal para binário (números com base 2) e números decimais (números com base 10). Converter Hexadecimal para Código Binário para adicionar este calci ao seu site Basta copiar e colar o código abaixo para sua página da web onde você deseja exibir este calculadormand-Line Opções Esta seção descreve algumas opções de linha de comando que podem ser úteis no diagnóstico de problemas. B.1 Opções de linha de comando do HotSpot VM As opções de linha de comando que são prefixadas com - XX são específicas para o Java HotSpot Virtual Machine. Muitas destas opções são importantes para o ajuste de desempenho e propósitos de diagnóstico e, portanto, são descritas neste apêndice. Todas as opções - XX são descritas aqui. B.1.1 Mudança Dinâmica de Valores de Flag Com o comando jinfo - flag (2.6 jinfo Utility) e com o utilitário JConsole (2.3 JConsole Utility), você pode definir dinamicamente, unset ou alterar o valor de certos flags Java VM para um Java especificado processo. Para obter a lista completa desses sinalizadores, use a guia MBeans do utilitário JConsole. Consulte a lista de valores para o atributo DiagnosticOptions do MBean HotSpotDiagnostic, que está no domínio com. sun. management. Esses sinalizadores são os seguintes: B.1.2 - XX: Opção HeapDumpOnOutOfMemoryError A opção de linha de comando - XX: HeapDumpOnOutOfMemoryError informa a VM HotSpot para gerar um despejo heap quando uma alocação do heap Java ou da geração permanente não pode ser satisfeita. Não há sobrecarga na execução com esta opção, e por isso pode ser útil para sistemas de produção onde OutOfMemoryError leva muito tempo para a superfície. Você também pode especificar essa opção em tempo de execução com a guia MBeans no utilitário jconsole. O despejo do heap está no formato binário do HPROF e, portanto, pode ser analisado usando qualquer ferramenta que possa importar este formato. Por exemplo, a ferramenta jhat pode ser usada para fazer uma análise rudimentar do dump. Veja 2.5 jhat Utility. O exemplo a seguir mostra o resultado da falta de memória com esse conjunto de sinalizadores. O ConsumeHeap preenche o heap Java e fica sem memória. Quando java. lang. OutOfMemoryError é lançado, um arquivo de despejo heap é criado. Neste caso o arquivo é 507MB e é criado como javapid2262.hprof no diretório atual. Por padrão, o dump heap é criado em um arquivo chamado javapid pid. hprof no diretório de trabalho da VM, como no exemplo acima. Você pode especificar um nome ou diretório de arquivo alternativo com a opção - XX: HeapDumpPath. Por exemplo - XX: HeapDumpPath / disk2 / dumps fará com que o despejo do heap seja gerado no diretório / disk2 / dumps. B.1.3 - XX: OnError Option Quando ocorre um erro fatal, o HotSpot Virtual Machine pode opcionalmente executar um script ou comando fornecido pelo usuário. O script ou comando é especificado usando a opção de linha de comando - XX: OnError string, onde string é um único comando ou uma lista de comandos separados por ponto-e-vírgula. Dentro da corda. Todas as ocorrências de p são substituídas pelo ID de processo atual (pid), e todas as ocorrências de são substituídas por um único. Os exemplos a seguir demonstram como essa opção pode ser usada. No sistema operacional Solaris, o comando pmap exibe informações sobre o espaço de endereçamento de um processo. No exemplo a seguir, se ocorrer um erro fatal, o comando pmap é executado para exibir o espaço de endereçamento do processo. O exemplo a seguir mostra como o relatório de erro fatal pode ser enviado para um alias de suporte quando um erro fatal for encontrado No sistema operacional Solaris o comando gcore cria uma imagem principal do processo especificado eo comando dbx inicia o depurador. No exemplo a seguir, o comando gcore é executado para criar a imagem principal e o depurador é iniciado para anexar ao processo. No exemplo de Linux a seguir, o depurador gdb é iniciado quando um erro inesperado é encontrado. Uma vez lançado, gdb irá anexar ao processo de VM No Windows o depurador do Dr. Watson pode ser configurado como o depurador post-mortem para que um despejo de falha é criado quando um erro inesperado é encontrado. Consulte 7.4.4 Coleta de Crash Dumps no Windows para obter outros detalhes. Uma abordagem alternativa para obter um despejo de memória no Windows para usar a opção - XX: OnError para executar o utilitário userdump. exe, da seguinte forma. O utilitário userdump faz parte do pacote Microsoft OEM Support Tools, que pode ser baixado do site da Microsoft. Consulte 7.4.4 Coletando Crash Dumps no Windows para obter mais detalhes. O exemplo acima pressupõe que o caminho para o utilitário userdump. exe está definido na variável PATH. B.1.4 - XX: Opção ShowMessageBoxOnError Quando a opção - XX: ShowMessageBoxOnError é definida e um erro fatal for encontrado, a VM HotSpot exibirá informações sobre o erro fatal e solicitará ao usuário que especifique se o depurador nativo deve ser iniciado. No caso do Solaris OS e Linux, a saída eo prompt são enviados para o console do aplicativo (entrada padrão e saída padrão). No caso do Windows, uma caixa de mensagem do Windows aparece. Abaixo está um exemplo de um erro fatal encontrado em um sistema Linux. Neste caso um erro SIGSEGV ocorreu eo usuário é solicitado a especificar se o depurador gdb deve ser iniciado para anexar ao processo. Se o usuário digitar y ou yes. Gdb será lançado (assumindo que ele está na variável PATH). No sistema operacional Solaris, a mensagem é semelhante à anterior, exceto que o usuário é solicitado a iniciar o depurador dbx. No Windows uma caixa de mensagem é exibida. Se o usuário pressionar o botão YES, a VM tentará iniciar o depurador padrão. Esse depurador é configurado por uma configuração de registro, consulte 7.4.4 Coleta de Crash Dumps no Windows para obter mais detalhes. Se o Microsoft Visual Studio estiver instalado, o depurador padrão normalmente é configurado para ser msdev. exe. No exemplo acima a saída inclui o ID de processo (10791 neste caso) e também o ID de segmento (1026 neste caso). Se o depurador for iniciado, um dos passos iniciais no depurador poderá ser para seleccionar o thread e obter o respectivo rastreio de pilha. Como o processo está aguardando uma resposta, é possível usar outras ferramentas para obter um despejo de falha ou consultar o estado do processo. No Solaris OS, por exemplo, um dump de núcleo pode ser obtido usando o utilitário gcore. No Windows, um despejo de memória do Dr. Watson pode ser obtido usando os programas userdump ou windbg. O programa windbg está incluído no Microsofts Debugging Tools for Windows. Consulte 7.4.4 Coleta de Crash Dumps no Windows para obter mais informações sobre windbg eo link para o local de download. No windbg, selecione a opção de menu Anexar a um processo, que exibe a lista de processos e solicita o ID do processo. A VM HotSpot exibe uma caixa de mensagem, que inclui o ID do processo. Uma vez selecionado o comando. dump / f pode ser usado para forçar um despejo de memória. No exemplo a seguir, um despejo de falha é criado no arquivo crash. dump. Criando Crash Dump com windbg Em geral, a opção - XX: ShowMessageBoxOnError é mais útil em um ambiente de desenvolvimento em que as ferramentas do depurador estão disponíveis. A opção - XX: OnError é mais adequada para ambientes de produção em que uma seqüência fixa de comandos ou scripts é executada quando um erro fatal é encontrado. B.1.5 Outras Opções - XX Várias outras opções de linha de comando - XX podem ser úteis na solução de problemas. - XX: OnOutOfMemoryError seqüência de caracteres é usado para especificar um comando ou script para executar quando um OutOfMemoryError é lançado pela primeira vez. - XX: ErrorFile filename é usado para especificar um local para o arquivo de log de erro fatal. Consulte C.1 Localização do log de erros fatais. - XX: Caminho HeapDumpPath é usado para especificar um local para um despejo de pilha. Consulte B.1.2 - XX: Opção HeapDumpOnOutOfMemoryError. - XX: Tamanho MaxPermSize é usado para especificar o tamanho da memória de geração permanente. Consulte 3.1.2 Mensagem detalhada: Espaço PermGen. - XX: PrintCommandLineFlags é usado para imprimir todos os sinalizadores de linha de comando VM. Consulte 7.3 Coleta de Dados para um Relatório de Erros. - XX: PrintConcurrentLocks fará com que o manipulador Ctrl-Break para imprimir uma lista de bloqueios simultâneos pertencentes a cada thread. - XX: PrintClassHistogram fará com que o manipulador Ctrl-Break para imprimir um heap histograma. - XX: PrintGCDetails e - XX: PrintGCTimeStamps são usados para imprimir informações detalhadas sobre a coleta de lixo. Consulte B.2.3 - verbose: Opção gc. - XX: UseAltSigs é usado (no sistema operacional Solaris 8 e 9) para instruir a VM HotSpot a usar sinais alternativos para SIGUSR1 e SIGUSR2. Consulte 6.1 Tratamento de Sinais no Solaris OS e Linux. - XX: UseConcMarkSweepGC. - XX: UseSerialGC. E - XX: UseParallelGC especificar a política de coleta de lixo a ser usado. Consulte 4.2.2 Falha durante a coleta de lixo. B.2 Outras Opções de Linha de Comando Além das opções - XX, muitas outras opções de linha de comando podem fornecer informações de solução de problemas. Esta seção descreve algumas destas opções. B.2.1 - Xcheck: opção jni A opção - Xcheck: jni é útil no diagnóstico de problemas com aplicativos que usam a interface Java Native (JNI). Às vezes, bugs no código nativo podem fazer com que a VM HotSpot falhe ou se comporte incorretamente. A opção - Xcheck: jni é adicionada à linha de comando que inicia o aplicativo, como no exemplo a seguir. A opção - Xcheck: jni faz com que a VM faça validação adicional nos argumentos passados para as funções JNI. Observe que a opção não é garantida para localizar todos os argumentos inválidos ou diagnosticar bugs lógicos no código do aplicativo, mas pode ajudar a diagnosticar um grande número desses problemas. Quando um argumento inválido é detectado, a máquina virtual imprime uma mensagem para o console do aplicativo ou saída padrão, imprime o rastreamento de pilha do thread ofensivo e aborta a VM. No exemplo a seguir, um valor NULL foi incorretamente passado para uma função JNI que não permite um valor NULL. No exemplo a seguir, um argumento incorreto foi fornecido para uma função JNI que espera um argumento jfieldID. A lista a seguir apresenta exemplos de outros problemas que a opção - Xcheck: jni pode ajudar a diagnosticar. Casos em que o ambiente JNI para o segmento errado é usado Casos em que uma referência JNI inválida é usada Casos em que uma referência a um tipo não-array é fornecida a uma função que requer um tipo de matriz Casos onde um ID de campo não estático é fornecido Uma função que espera um ID de campo estático Casos em que uma chamada JNI é feita com uma exceção pendente Em geral, todos os erros detectados pela opção - Xcheck: jni são erros fatais, ou seja, o erro é impresso ea VM é abortada. Existe uma excepção a este comportamento. Quando uma chamada JNI é feita dentro de uma região crítica JNI, a seguinte mensagem de aviso não fatal é impressa. Uma região crítica JNI é criada quando código nativo usa as funções JNI GetPrimitiveArrayCritical ou GetStringCritical para obter uma referência a uma matriz ou seqüência de caracteres no heap Java. A referência é mantida até que o código nativo chame a função de liberação correspondente. O código entre o get e o release é chamado de seção crítica do JNI e durante esse tempo a VM HotSpot não pode trazer a VM para um estado que permite que a coleta de lixo ocorra. A recomendação geral é não usar outras funções JNI dentro de uma seção crítica do JNI e, em particular, qualquer função JNI que possa potencialmente causar um deadlock. O aviso impresso acima pela opção - Xcheck: jni é, portanto, uma indicação de um problema potencial que nem sempre indica um bug de aplicativo. B.2.2 - verbose: class Opção A opção - verbose: class permite o registro de carga e descarga da classe. B.2.3 - verbose: gc Opção A opção - verbose: gc permite o registro de informações de coleta de lixo (GC). Ele pode ser combinado com outras opções específicas do HotSpot VM, como - XX: PrintGCDetails e - XX: PrintGCTimeStamps para obter mais informações sobre o GC. A saída de informações inclui o tamanho das gerações antes e depois de cada GC, o tamanho total da pilha, o tamanho dos objetos promovidos e o tempo gasto. Essas opções, juntamente com informações detalhadas sobre a análise e ajuste do GC, são descritas no site do Portal GC. A opção - verbose: gc pode ser habilitada dinamicamente em tempo de execução usando a API de gerenciamento ou TI JVM. Consulte a seção 2.17 Desenvolvendo ferramentas de diagnóstico para obter mais informações sobre essas APIs. A ferramenta de monitoramento e gerenciamento jconsole também pode habilitar ou desabilitar a opção quando a ferramenta é anexada a uma VM de gerenciamento. Veja 2.3 Utilitário JConsole. B.2.4 - verbose: jni Opção A opção - verbose: jni permite o log de JNI. Quando um método JNI ou nativo é resolvido, a VM HotSpot imprime uma mensagem de rastreamento para o console do aplicativo (saída padrão). Ele também imprime uma mensagem de rastreamento quando um método nativo é registrado usando a função JNI RegisterNative. A opção - verbose: jni pode ser útil no diagnóstico de problemas com aplicativos que usam bibliotecas nativas. Copyright copy1995, 2018, Oracle e / ou suas afiliadas. Todos os direitos reservados. Noticias legais
Comments
Post a Comment