Miten korjata VirtualMachineError Java

Java.lang.VirtualMachineError heitetään, kun Java-virtuaalikone kohtaa sisäisen virheen tai resurssirajoituksen, joka estää sen toiminnan. Se on JVM: n käyttämä itsepuolustusmekanismi, joka estää koko sovelluksen kaatumisen. Tässä artikkelissa, aion keskustella monia erilaisia VirtualMachineError, niiden ominaisuudet, eri syistä, miksi ne käynnistyvät, ja useita mahdollisuuksia ratkaisuja korjata niitä.

tyypit VirtualMachineError

Virtualmachineerroreja on neljää eri tyyppiä:

  1. Virheilmoitus
  2. StackOverflowError
  3. Sisäinen virhe
  4. Tuntematon virhe

käydään nämä tyypit yksityiskohtaisesti läpi tässä osiossa.

    Jax London
    Jax London 2019

    Emily Lannon

    seuraavan sukupolven DEVOPS: VALUE STREAM MANAGEMENT

    Helen Beal (DevOps-instituutti.)

    Emily Lannon

    HOW TO GROW your SERVERLESS TEAM

    Sheen Brisals (the LEGO Group)

    Emily Lannon

    MLOPS: KONEOPPIMISJÄRJESTELMIEN jatkuva toimitus

    Hauke Brammer (finpair GmbH)

VirtualMachineError

Fig: Java throwable class hierarchy

OutOfMemoryError

aivan kuten OMG (Oh My God) – lyhenne, OOM (OutOfMemoryError) on melko suosittu DevOps-yhteisön keskuudessa. Vaikka useimmat DevOps insinöörit saattavat ajatella, että on vain yksi OutOfMemoryError, on itse asiassa kahdeksan eri makuja OutOfMemoryError:

  • java.lang.Outofmoryerror: Java heap space
  • java.lang.Virhe: GC: n Ylitysraja ylitetty
  • java.lang.Virheilmoitus: pyydetty array size exceeds vm limit
  • java.lang.Virheilmoitus: permgenavaruus
  • Jaava.lang.Virhe: Metaspace
  • java.lang.Virheilmoitus: ei voitu luoda uutta alkuperäistä säiettä
  • java.lang.Outofmoryerror: Kill process or sacrifice child
  • java.lang.Virheen outofmoryerror: reason stack_race_with_native_method

jokainen virhe johtuu eri syistä. Samoin ratkaisut näihin virheisiin eroavat sen perusteella, millainen maku OutOfMemoryError kysymys se on. Tässä on kaunis yhden sivun dokumentti, joka tiivistää kaikki erilaiset virheet, niiden syyt ja ratkaisut.

yleensäkin virhe voidaan diagnosoida ja korjata analysoimalla Jätteenkeräyslokit ja kaatopaikat. Koska roskien Keräyslokien analysointi manuaalisesti voi olla työlästä, voit harkita ilmaisia työkaluja, kuten GCeasy, HP Jmeter tai IBM GC analyzer. Samoin, voit harkita käyttää ilmaisia työkaluja, kuten HeapHero tai Eclipse matto analysoida kaatopaikat.

Katso myös: StackOverFlowError: Causes & solutions

StackOverflowError

a thread ’ s stack stack stores information about the methods it executes, primitive datatype values, local variabilities, object pointers, and return values. Kaikki nämä asiat kuluttavat muistia. Jos langan pinokoot kasvavat yli varatun muistirajan, niin java.lang.StackOverflowError on heitetty. Tämä ongelma tapahtuu tyypillisesti, kun säie rekursiivisesti vetoaa samaan funktioon uudelleen ja uudelleen suoritusohjelmassa olevan vian vuoksi. Lisätietoja siitä, miten debug StackOverflowError ja kaikki mahdolliset ratkaisut korjata itc olla täällä.

Sisäinen virhe

Jaava.lang.Internalerroria JVM heittää kolmesta syystä. Jos virtuaalikoneen toteuttavassa ohjelmistossa on vika, taustalla olevassa isäntäjärjestelmäohjelmistossa tai laitteistossa on vika.

on kuitenkin harvinaista kohdata tällainen Sisävirhe. Ymmärtääksesi, mitä erityisiä skenaarioita voi aiheuttaa sisäisen virheen, etsi ’Sisäinen virhe’ merkkijono Oraclen Java Bug-tietokannasta. Tätä artikkelia kirjoitettaessa (20. joulukuuta 2018) Oraclen Java Bug-tietokannassa on vain 200 virhettä, jotka on ilmoitettu tästä virheestä. Useimmat niistä on korjattu. Joten älä murehdi liikaa tästä!

Tuntematon virhe

java.lang.UnknownError heitetään, kun poikkeus tai virhe on tapahtunut, mutta Java-virtuaalikone ei pysty raportoimaan todellista poikkeusta tai virhettä. Tuntematonta virhettä esiintyy harvoin. Itse asiassa, kun etsit ’UnknownError’ Oracle Java Bug-tietokannassa, oli vain 2 vikoja todettu raportoitu.

KATSO MYÖS: Java-sovellusten etävianetsintä

ominaisuudet

Virtualmachineerrorilla on pari ensisijaista ominaisuutta:

  • tarkistamattomat poikkeukset
  • synkroninen & asynkroninen toimitus

tarkastellaan näitä kahta ominaisuutta tässä jaksossa.

tarkistamattomat poikkeukset

poikkeuksia on kahdenlaisia: tarkistetut ja tarkistamattomat.

poikkeuksia, jotka tarkistetaan käännösaikaan, kutsutaan tarkistetuiksi poikkeuksiksi. Jos jotkut menetelmät koodin heittää tarkistettu poikkeus, niin menetelmä on joko käsitellä poikkeus tai se on määriteltävä poikkeus käyttäen ’heittää’ avainsanaa. Esimerkkejä tarkastetuista poikkeuksista ovat: IOException, SQLException, Dataccessexception, Classnotfound Exception, ja enemmän.

Tarkistamattomilla poikkeuksilla ei ole tätä vaatimusta. Niitä ei tarvitse ottaa kiinni tai julistaa heitetyiksi. Kaikenlaiset VirtualMachineError ovat tarkistamattomia poikkeuksia.

synkroninen & asynkroninen toimitus

poikkeukset voidaan heittää kahdessa tilassa: synkroninen ja asynkroninen.

synkroniset poikkeukset tapahtuvat tietyssä ohjelmalausekkeessa riippumatta siitä, kuinka monta kertaa ohjelma on suoritettu vastaavassa ympäristössä. Esimerkkejä synkronisista poikkeuksista ovat sellaiset asiat kuin NullPointerException, Arrayindexoutoufbound Exception jne.

asynkronisia poikkeuksia voi tapahtua missä tahansa vaiheessa ja missä tahansa ohjelmalauseen osassa. Ei ole johdonmukaisuutta, jossa se voidaan heittää. Kaikki Virtualmachineerrilit heitetään asynkronisesti, mutta joskus ne voidaan heittää myös synkronisesti. StackOverflowError voidaan heittää synkronisesti menetelmällä kutsuminen, sekä asynkronisesti johtuen natiivin menetelmän suorittamisen tai Java virtuaalikoneen resurssien rajoituksia. Samoin, Outofmoryerror voidaan heittää synkronisesti aikana objektin luominen, array luominen, luokan alustus, ja nyrkkeily muuntaminen, sekä asynkronisesti.

Vastaa

Sähköpostiosoitettasi ei julkaista.

Previous post Afroamerikkalainen terapia
Next post Ovatko Skitsofreenikot Vaarallisia?