10 pomembnih možnosti JVM za proizvodni aplikacijski sistem JAVA

Spoznajte bistvene možnosti JVM (Java Virtual Machine) za boljše delovanje in odpravljanje napak.


Če ste razvijalec Java ali skrbnik vmesne programske opreme, potem morate vedeti, kaj pomenijo možnosti JVM, skupaj z njihovim pomenom in kako vplivajo na vašo aplikacijo. Poiščimo jih.

Pregled možnosti JVM

Ko govorimo o možnostih JVM, potem obstajajo tri vrste možnosti, ki jih lahko vključite v svoje JVM, standardne, nestandardne in napredne možnosti. Če preizkusite napredno možnost, vedno uporabite možnost z -XX. Podobno, če uporabljate nestandardno možnost, uporabite -X. Standardne možnosti ne dodajajo ničesar na to možnost.

Katere možnosti JVM uporablja vaša aplikacija?

Če aplikacija deluje v Linuxu, lahko uporabite ps -ef | grep java, da prepoznate postopek Java in si ogledate možnosti JVM, natisnjene kot argumente procesa. Če v sistemu deluje več kot en postopek Java, boste morda morali uporabiti ključno besedo, ki je edinstvena za vašo aplikacijo Java.

Če je vaš argument predolg, poskusite uporabiti ps -auxww, saj bo ta ukaz prikazal tudi dolg seznam argumentov.

Ko imate seznam zastav JVM, lahko dobite predstavo o vedenju katere koli aplikacije Java, na primer Tomcat.

Java velikost kopice

 -Xms – nastavite začetno velikost kopice Java
-Xmx – nastavite največjo velikost kopice Java
-Xss – nastavite velikost zlaganja javanskih niti

-Xms – Ta možnost je določiti začetno velikost kopice za JVM, na primer Xms2048m, kar pomeni, da je začetna velikost kopice JVM 2 GB naokoli. Ko se torej zažene JVM, bo kup pomnilnika tako velik. Presenetljivo da! S tem se prepreči spreminjanje velikosti med zagonom in podaljša čas zagona JVM.

-Xmx – Ta možnost je določiti največjo velikost kopice JVM, na primer Xmx2048m, kar pomeni, da bo največja velikost kopice JVM samo 2 GB.

V bistvu boste vedno imeli Xmsand-Xmx skupaj.

Nastavite odstotek kopice

-XX: MaxHeapFreeRatio – nastavi največji odstotek brez kopije po GC, da se prepreči krčenje.

-XX: MinHeapFreeRatio – določi najnižji odstotek brez kopije po GC, da se prepreči širitev; za spremljanje uporabe kopice lahko uporabite JCosole.

Omogoči skupno rabo podatkov v razredu

Določite možnost Xshareclasses, da omogočite skupno rabo podatkov razreda v predpomnilniku skupnega razreda. JVM se poveže z obstoječim predpomnilnikom ali ustvari predpomnilnik, če ne obstaja. Lahko imate več predpomnilnikov in lahko določite pravilni predpomnilnik, tako da dodate možnost pod-možnosti možnosti -Xshareclasses.

Velikost permGen-a

Zgodnje možnosti JVM določajo velikost pomnilniškega vmesnika, vendar -XX: PermSize je, da določi velikost prostora PermGen, kamor se shranijo niz nizov in metapodatki razreda. Ta možnost je še posebej učinkovita za spletni strežnik, kot je Tomcat, ki med uvajanjem pogosto naloži razrede spletne aplikacije.

Mimogrede, vredno je spoznati, da je prostor PermGen v Java 8 prevzel Metaspace, in ta možnost ni uporabna, če uporabljate JRE 8 JVM.

Natisni GC

-besedno besedo: gc – dnevniki zbiralnika smeti tečejo in kako dolgo trajajo.
-XX: + NatisniGCDetails – vključuje podatke iz -verbose: gc, dodaja pa tudi podatke o velikosti nove generacije in natančnejših časih.
-XX: -PrintGCTimeStamps – Natisnite časovne žige pri odvozu smeti.

Te možnosti JVM se uporabljajo za omogočanje beleženja smeti, kar je zelo učinkovito za latencijsko delovanje. Včasih smo bili v sistemih, kjer iščemo zakasnitve na mikrosekundi, in če prepoznate, lahko veliko zbiranje smeti traja nekaj milisekund.

Torej gremo za brezplačno arhitekturo GC, kot je LMAX motilka, toda če ne boste uporabljali ultra zakasnitvene aplikacije, vam bo ta priročna možnost svetovala pomembne statistike GC. Odkrili boste, ali gre za večje ali manjše zbiranje smeti, kakšen odvoz smeti, kako pogosto se obnavlja spomin in koliko časa je imel itd..

Ravnanje z napako ‘OutOfMemory’

Če želite sprožiti shranjevanje v velikem pomnilniku, lahko uporabite -XX: + HeapDumpOnOutOfMemoryError

Ta možnost JVM ustvari smetišče, ko vaš JVM umre z napako OutOfMemory. Stroški niso povezani, razen če se OOM resnično pojavi. Ta zastava je potreben za proizvodne sisteme, saj je ponavadi edini način, da težavo globinsko določijo.

Odpadni odlagališče bo privzeto nastavljeno v “trenutni imenik” JVM. Če želite ustvariti kopice v določenem imeniku, zaženite

-XX: HeapDumpPath = [imenik poti do heap-dump]
-XX: + UporabaGCOverheadLimit
-XX: OnOutOfMemoryError ="< cmd arg >;< cmd arg >"

Dump file ima ogromno velikost, vse do gigabajtov, zato zagotovite, da ciljni datotečni sistem omogoča dovolj zmogljivosti.

Če želimo strežnik znova zagnati takoj, ko pride do pomnilnika, lahko ta parameter nastavimo z istim namenom –

XX: OnOutOfMemoryError ="izklop -r"

Sledi razkladanje in razkladanje

-XX: + TraceClassLoading in -XX: + TraceClassUnloading sta dve možnosti JVM, ki ju uporabljamo za tiskanje podatkov o beleženju, kadar se razredi naložijo v JVM ali odložijo iz JVM. Te JVM zastavice so uporabne, če imate kakršno koli vrsto uhajanja pomnilnika, povezano s prenašalcem, in sumite, da razredi ne razkladujejo ali zbirajo smeti.

Java classpath

Ko govorimo o JAVA Classpath, potem Xbootclasspath določa vnose razredov, ki jih želimo naložiti brez preverjanja. JVM preveri vse razrede, ki jih naloži, da se prepriča, da ne poskuša odstranjevati predmeta z int, pojavljati dodatnih vnosov iz sklada ali potiskati preveč itd.. 

Postavitev razreda na bootclasspath tudi preskoči stroške, vendar jih je treba uporabiti le, če veste, da so bili razredi že večkrat preverjeni. V JRubyju so za enostavni skript zmanjšali čas zagona za polovico in več.

Profiliranje

Java profiliranje je postopek spremljanja različnih parametrov ravni JVM, kot so izvedbe metod, izvedbe niti, zbiranje smeti in ustvarjanje predmetov. Java profiliranje vam omogoča tudi lepši pregled nad izvajanjem ciljne aplikacije in njeno uporabo virov.

-Xprof
-Xrunhprof

64-bitno okolje

V okolju OS, kjer so nameščeni tako 32 kot 64-bitni paketi, JVM samodejno izbere 32-bitne okoljske pakete kot privzete.

Če želimo okolje ročno nastaviti na 64 bit, lahko to storimo s parametrom -d. In očitno je lahko bit OS-a 32 ali 64.

Zaključek

Upam, da vam to pomaga pri konfiguriranju parametrov JVM za vašo aplikacijo. Če vas zanima poglobljeno učenje o upravljanju pomnilnika Java, potem preverite to Seveda Udemy.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map