Java.idioma.VirtualMachineError é jogado quando uma máquina virtual Java encontra qualquer erro interno ou limitação de recursos que a impede de funcionar. É um mecanismo auto-defensivo empregado pela JVM para evitar que toda a aplicação caia. Neste artigo, vou discutir os vários tipos diferentes de VirtualMachineError, suas características, várias razões pelas quais eles são acionados, e várias soluções potenciais para corrigi-los.
Tipos de VirtualMachineError
Existem quatro tipos diferentes de VirtualMachineError:
- OutOfMemoryError
- StackOverflowError
- InternalError
- UnknownError
Vamos rever esses tipos em detalhes nesta seção.
a PRÓXIMA GERAÇÃO de DEVOPS: FLUXO de VALOR de GESTÃO de
Helen Beal (DevOps Instituto.)
COMO CRESCER sem servidor da EQUIPE
Brilho Brisals (Grupo LEGO)
MLOPS: Fornecimento CONTÍNUO DE APRENDIZADO de MÁQUINA, SISTEMAS de
Hauke Brammer (finpair GmbH)
Fig: Java throwable class hierarchy
OutOfMemoryError
Just like the OMG (Oh My God) acronym, OOM (OutOfMemoryError) is quite popular among DevOps community. Enquanto a maioria dos engenheiros da DevOps pode pensar que há apenas um erro de erro, existem na verdade oito sabores diferentes do erro de erro.:
- java.idioma.OutOfMemoryError: Java heap space
- java.idioma.Erro de memória: o limite superior do GC excedeu
- java.idioma.Erro omemoryerror: o tamanho da lista pedida excede o limite VM
- java.idioma.OutOfMemoryError: Permgen space
- java.idioma.OutOfMemoryError: Metaspace
- java.idioma.OutOfMemoryError: incapaz de criar um novo tópico nativo
- java.idioma.OutOfMemoryError: Kill process or sacrifice child
- java.idioma.OutOfMemoryError: reason stack_ trace_with_native_method
cada erro é despoletado por diferentes razões. Da mesma forma, as soluções para esses erros diferem com base em que tipo de sabor do problema de erro do erro do erro do erro do erro do erro. Aqui está um belo documento de uma página que resume todos os diferentes tipos de erro Dememoryerror, suas causas e soluções.
In general, OutOfMemoryError can be diagnosticed and fixed by analyzing Garbage Collection logs and Heap Dumps. Uma vez que analisar manualmente os registros de coleta de lixo pode ser tedioso, você pode considerar o uso de ferramentas livres como GCeasy, HP Jmeter, ou IBM GC analyzer. Da mesma forma, você pode considerar usar ferramentas livres como HeapHero ou Eclipse MAT para analisar lixeiras de heap.
ver também: projecto StackOverFlowError: Causes & solutions
StackOverflowError
a thread’s stack stack stack stack Stack armazena informações sobre os métodos que executa, valores primitivos do tipo de dados, variáveis locais, ponteiros de objetos e valores de retorno. Todas estas coisas consomem memória. Se os tamanhos de pilha de um thread crescem além do limite de memória alocada, então o java.idioma.O StackOverflowError está lançado. Este problema normalmente acontece quando um tópico invoca recursivamente a mesma função uma e outra vez por causa de um bug no programa de execução. Mais detalhes sobre como depurar StackOverflowError e todas as soluções possíveis para corrigir itc an be aqui.
erro interno
java.idioma.O erro interno é lançado pela JVM por três razões. Se houver uma falha no software que implementa a máquina virtual, uma falha no software do sistema hospedeiro subjacente, ou uma falha no hardware.No entanto, é raro encontrar este tipo de erro interno. Para entender que cenários específicos podem causar erro interno, procure a string ‘InternalError’ na base de dados de erros Java da Oracle. No momento de escrever este artigo (20 de dezembro de 2018), existem apenas 200 defeitos relatados para este erro na Base de dados de bugs Java da Oracle. A maioria está arranjada. Por isso, não te preocupes muito com este!
erro desconhecido
java.idioma.O erro é jogado quando uma exceção ou erro ocorreu, mas a máquina virtual Java não é capaz de relatar a exceção ou erro real. O erro desconhecido raramente ocorre. Na verdade, ao procurar por ‘UnknownError’ na Base de dados de bugs Oracle Java, só foram encontrados 2 defeitos relatados.
VER TAMBÉM: Depuração remota para aplicações Java
Características
VirtualMachineError tem algumas características primárias:
- exceções não verificadas
- Síncrona & entrega assíncrona
Vamos discutir estas duas características nesta seção.
excepções não verificadas
existem dois tipos de excepções: assinaladas e não verificadas.
exceções que são verificadas na hora de compilação são chamadas de exceção verificada. Se alguns métodos em seu código lançam uma exceção assinalada, então o método deve lidar com a exceção ou deve especificar a exceção usando a palavra-chave ‘lances’. Exemplos das exceções assinaladas são: Ioexcepção, SQLException, DataAccessException, ClassNotFoundException, e muito mais.
exceções não controladas não têm este requisito. Não têm de ser apanhados ou declarados atirados. Todos os tipos de erro VirtualMachineError estão fora de controlo.
entrega síncrona& entrega assíncrona
exceções podem ser lançadas em dois modos: síncrona e assíncrona.
exceções síncronas acontecem em uma declaração específica do programa, não importa quantas vezes o programa foi executado em ambiente semelhante. Exemplos de exceções síncronas são coisas como NullPointerException, Arrayindexout Tofboundexception, etc.
exceções assíncronas podem acontecer em qualquer momento e em qualquer parte da declaração do programa. Não há consistência onde ela possa ser lançada. Todos os erros manuais Virtuaisforam lançados assíncronamente, mas às vezes também podem ser lançados sincronicamente. StackOverflowError pode ser jogado sincronicamente por Invocação de métodos, bem como assíncronamente devido à execução de métodos nativos ou limitações de recursos de máquina Virtual Java. Similarmente, OutOfMemoryError pode ser jogado sincronicamente durante a criação de objetos, criação de array, inicialização de classes e conversão de boxe, bem como assíncronamente.