Sådan repareres en VirtualMachineError i Java

Java.lang.VirtualMachineError kastes, når en virtuel Java-maskine støder på en intern fejl eller ressourcebegrænsning, der forhindrer den i at fungere. Det er en selvforsvarsmekanisme, der anvendes af JVM for at forhindre, at hele applikationen går ned. I denne artikel vil jeg diskutere de mange forskellige typer VirtualMachineError, deres egenskaber, forskellige grunde til, at de udløses, og flere potentialeløsninger til at rette dem.

typer af VirtualMachineError

der er fire forskellige typer VirtualMachineError:

  1. OutOfMemoryError
  2. Stackoverflorror
  3. InternalError
  4. ukendt fejl

lad os gennemgå disse typer i detaljer i dette afsnit.

    London
    London 2019

    Emily Lannon

    næste GENERATION DEVOPS: VALUE STREAM MANAGEMENT

    Helen Beal (DevOps Institute.)

    Emily Lannon

    Sådan vokser du dit serverløse TEAM

    Sheen Brisals (LEGO Gruppen)

    Emily Lannon

    MLOPS: kontinuerlig levering af MASKINLÆRINGSSYSTEMER

    Hauke Brammer (finpair GmbH)

VirtualMachineError

Fig: Java kastbar klasse hierarki

OutOfMemoryError

ligesom OMG (Oh My God) akronym, OOM (OutOfMemoryError) er ganske populær blandt DevOps samfund. Mens de fleste DevOps-ingeniører måske tror, at der kun er en OutOfMemoryError, der er faktisk otte forskellige smag af OutOfMemoryError:

  • java.lang.OutOfMemoryError: Java bunke plads
  • java.lang.OutOfMemoryError: GC Overhead grænse overskredet
  • java.lang.OutOfMemoryError: anmodet array størrelse overstiger VM grænse
  • java.lang.OutOfMemoryError: Permgen plads
  • java.lang.OutOfMemoryError: Metaspace
  • java.lang.OutOfMemoryError: kan ikke oprette ny indbygget tråd
  • java.lang.OutOfMemoryError: Dræb proces eller ofre barn
  • java.lang.OutOfMemoryError: årsag stack_trace_med_native_method

hver fejl udløses af forskellige årsager. Tilsvarende varierer løsninger til disse fejl baseret på hvilken slags smag af OutOfMemoryError problem det er. Her er et smukt dokument på en side, der opsummerer alle forskellige former for fejl, deres årsager og løsninger.

generelt kan OutOfMemoryError diagnosticeres og rettes ved at analysere affaldsindsamlingslogfiler og dynger. Da det kan være kedeligt at analysere Affaldsindsamlingslogfiler manuelt, kan du overveje at bruge gratis værktøjer som GCeasy, HP JMeter eller IBM GC-analysator. På samme måde kan du overveje at bruge gratis værktøjer som HeapHero eller Eclipse MAT til at analysere dynger.

se også: Stackoverflorror: Årsager & løsninger

Stackoverflorgerror

en tråds stack stack gemmer oplysninger om de metoder, den udfører, primitive datatypeværdier, lokale variabler, objektpegere og returværdier. Alle disse ting forbruger hukommelse. Hvis en tråds stakstørrelser vokser ud over den tildelte hukommelsesgrænse, så java.lang.Stackoverflorror er kastet. Dette problem opstår typisk, når en tråd rekursivt påberåber sig samme funktion igen og igen på grund af en fejl i det udførende program. Flere detaljer om, hvordan du debugger Stackoverflorror og alle mulige løsninger til at rette itc og være her.

InternalError

java.lang.InternalError kastes af JVM af tre grunde. Hvis der er en fejl i programmet, der implementerer den virtuelle maskine, en fejl i det underliggende værtssystemprogram eller en fejl i udstyret.

det er dog sjældent at støde på denne form for Internfejl. For at forstå, hvilke specifikke scenarier der kan forårsage InternalError, skal du søge efter ‘InternalError’ – strengen i Oracles Java Bug-database. På tidspunktet for skrivningen af denne artikel (20.December 2018) er der kun rapporteret 200 fejl for denne fejl i Oracles Java Bug-database. De fleste af dem er faste. Så bekymre dig ikke for meget om denne!

ukendt fejl

java.lang.Ukendt fejl kastes, når der er opstået en undtagelse eller fejl, men Java virtual machine kan ikke rapportere den faktiske undtagelse eller fejl. Den ukendte fejl forekommer sjældent. Faktisk, når du søger efter’ Ukendt fejl ‘ i Oracle Java Bug database, var der kun 2 fejl fundet rapporteret.

SE OGSÅ: Fjernfejlfinding til Java-applikationer

egenskaber

VirtualMachineError har par primære egenskaber:

  • ukontrollerede undtagelser
  • synkron & asynkron levering

lad os diskutere disse to egenskaber i dette afsnit.

ikke-markerede undtagelser

der er to typer undtagelser: markeret og ikke markeret.

undtagelser, der kontrolleres på kompileringstidspunktet, kaldes markeret undtagelse. Hvis nogle metoder i din kode kaster en kontrolleret undtagelse, skal metoden enten håndtere undtagelsen, eller den skal angive undtagelsen ved hjælp af nøgleordet ‘kast’. Eksempler på de kontrollerede undtagelser er: Ioundtagelse, ordblindhed, Dataadgangsundtagelse, Classnotfoundundtagelse og meget mere.

ukontrollerede undtagelser har ikke dette krav. De behøver ikke at blive fanget eller erklæret kastet. Alle typer VirtualMachineError er ukontrollerede undtagelser.

synkron& asynkron levering

undtagelser kan kastes i to tilstande: synkron og asynkron.

synkrone undtagelser sker ved en bestemt programerklæring, uanset hvor mange gange programmet er blevet udført i lignende miljø. Eksempler på synkrone undtagelser er ting som Nullpointerundtagelse, Arrayindeksoutofboundundtagelse osv.

asynkrone undtagelser kan ske på ethvert tidspunkt og i enhver del af programopgørelsen. Der er ingen sammenhæng, hvor det kan kastes. Alle de Virtuellemaskinefejl kastes asynkront, men nogle gange kan de også kastes synkront. Stackoverflorror kan kastes synkront ved metodeindkaldelse såvel som asynkront på grund af indbygget metodeudførelse eller Java Virtual Machine-ressourcebegrænsninger. Tilsvarende kan OutOfMemoryError kastes synkront under objektoprettelse, array-oprettelse, klasseinitialisering og boksekonvertering såvel som asynkront.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.

Previous post Afroamerikansk rådgivning
Next post Er Schisophrenics Farlige?