Hvordan fikse En VirtualMachineError I Java

Java.lang.VirtualMachineError kastes når En Java virtuell maskin møter noen intern feil eller ressursbegrensning som hindrer den fra å fungere. Det er en selv defensiv mekanisme ansatt AV JVM å hindre hele programmet fra å krasje. I denne artikkelen vil jeg diskutere de mange forskjellige Typer VirtualMachineError, deres egenskaper, ulike grunner til at de utløses, og flere potensialløsninger for å fikse dem.

Typer VirtualMachineError

det finnes fire forskjellige typer VirtualMachineError:

  1. OutOfMemoryError
  2. StackOverflowError
  3. InternalError
  4. UnknownError

la oss se gjennom disse typene i detalj i denne delen.

    Jax London
    Jax London 2019

    Emily Lannon

    Neste GENERASJON DEVOPS: VALUE STREAM MANAGEMENT

    Helen Beal (DevOps Institute.)

    Emily Lannon

    SLIK VOKSER DU DITT SERVERLØSE TEAM

    Sheen Brisals (THE LEGO Group)

    Emily Lannon

    MLOPS: KONTINUERLIG LEVERING AV MASKINLÆRINGSSYSTEMER

    Hauke Brammer (finpair GmbH)

VirtualMachineError

Fig: Java throwable class hierarchy

OutOfMemoryError

AKKURAT som omg (Oh My God) akronym, OOM (OutOfMemoryError) er ganske populær blant DevOps samfunnet. Mens De Fleste DevOps ingeniører kanskje tror at det bare er en OutOfMemoryError, er det faktisk åtte forskjellige smaker Av OutOfMemoryError:

  • java.lang.OutOfMemoryError: Java heap plass
  • java.lang.OutOfMemoryError: Gc Overhead grense overskredet
  • java.lang.OutOfMemoryError: Forespurt matrisestørrelse overstiger VM-grensen
  • java.lang.OutOfMemoryError: Permgen plass
  • java.lang.OutOfMemoryError: Metaspace
  • java.lang.OutOfMemoryError: Kan ikke opprette ny innfødt tråd
  • java.lang.OutOfMemoryError: Drep prosess eller ofre barn
  • java.lang.OutOfMemoryError: årsak stack_trace_with_native_method

hver feil utløses av forskjellige årsaker. På samme måte varierer løsninger for disse feilene basert på hvilken type smak Av OutOfMemoryError problemet det er. Her er et vakkert en-sidedokument som oppsummerer alle forskjellige Typer OutOfMemoryError, deres årsaker og løsninger.

Generelt Kan OutOfMemoryError diagnostiseres og repareres ved å analysere søppelinnsamlingslogger og Haugdumper. Siden analysere Søppel Samling logger manuelt kan være kjedelig, kan du vurdere å bruke gratis verktøy som GCeasy, HP JMETER, ELLER IBM GC analyzer. På samme måte kan du vurdere å bruke gratis verktøy som HeapHero ELLER Eclipse MAT for å analysere haugdumper.

SE også: StackOverFlowError: Årsaker & løsninger

StackOverflowError

en tråds stakkstabel lagrer informasjon om metodene den utfører, primitive datatypeverdier, lokale variabler, objektpekere og returverdier. Alle disse tingene forbruker minne. Hvis en tråds stabelstørrelser vokser utover den tildelte minnegrensen, så java.lang.StackOverflowError er kastet. Dette problemet skjer vanligvis når en tråd rekursivt påkaller samme funksjon igjen og igjen på grunn av en feil i det kjørende programmet. Flere detaljer om hvordan du feilsøker StackOverflowError og alle mulige løsninger for å fikse itc en være her.

Intern Feil

java.lang.InternalError er kastet AV JVM av tre grunner. Hvis det er en feil i programvaren som implementerer den virtuelle maskinen, en feil i den underliggende vertssystemprogramvaren eller en feil i maskinvaren.

det er imidlertid sjelden å møte denne typen InternalError. For å forstå hvilke spesifikke scenarier Som kan forårsake InternalError, søk etter’ InternalError ‘ – strengen I Oracles Java-Feildatabase. Når du skriver denne artikkelen (20. desember 2018), er det bare rapportert 200 feil for Denne feilen I Oracles Java-Feildatabase. De fleste av dem er løst. Så, ikke bekymre deg for mye om dette!

Ukjent

java.lang.UnknownError kastes når et unntak eller en feil har oppstått, Men Java virtual machine kan ikke rapportere det faktiske unntaket eller feilen. Det Ukjente Skjer sjelden. Faktisk, når du søker etter ‘UnknownError’ I Oracle Java Bug database, var det bare 2 feil funnet rapportert.

SE OGSÅ: Ekstern feilsøking For Java-programmer

Egenskaper

VirtualMachineError har noen primære egenskaper:

  • Ukontrollerte unntak
  • Synkron & asynkron levering

la oss diskutere disse to egenskapene i denne delen.

Ikke Merkede unntak

Det finnes To Typer Unntak: merket og ikke merket.

Unntak som er merket på kompileringstidspunktet kalles Kontrollert Unntak. Hvis noen metoder i koden din kaster et sjekket unntak, må metoden enten håndtere unntaket, eller det må angi unntaket ved hjelp av ‘kaster’ – søkeordet. Eksempler på de merkede unntakene er: Ioexception, SQLException, DataAccessException, ClassNotFoundException og mer.

Ukontrollerte unntak har ikke dette kravet. De trenger ikke å bli fanget eller erklært kastet. Alle Typer VirtualMachineError er ukontrollerte unntak.

Synkron & asynkron levering

Unntak kan kastes i to moduser: synkron og asynkron.

Synkrone unntak skjer ved en bestemt programuttalelse, uansett hvor mange ganger programmet har blitt utført i lignende miljø. Eksempler på synkrone unntak er ting Som NullPointerException, ArrayIndexOutOfBoundException, etc.

asynkrone unntak kan skje når som helst og i noen del av program uttalelse. Det er ingen konsistens hvor det kan kastes. Alle Virtualmachineerfeil kastes asynkront, men noen ganger kan de også kastes synkront. StackOverflowError kan kastes synkront ved metode påkalling, så vel som asynkront på grunn av native metode kjøring eller Java Virtual Machine resource begrensninger. På samme måte Kan OutOfMemoryError kastes synkront under objektopprettelse, matriseopprettelse, klasseinitialisering og boksekonvertering, samt asynkront.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.

Previous post Afrikansk-Amerikansk Rådgivning
Next post Er Schizofrene Farlige ?