Prijava smeća u datoteku na Javi

1. Pregled

Odvoz smeća čudo je programskog jezika Java koji nam pruža automatsko upravljanje memorijom. Odvoz smeća skriva detalje ručnog raspoređivanja i oslobađanja memorije. Iako je ovaj mehanizam fantastičan, ponekad ne funkcionira onako kako mi želimo. U ovom uputstvu istražit ćemo Java mogućnosti bilježenja statistike odvoza smeća i otkriti kako preusmjerite ove statistike u datoteku.

2. Oznake zapisivanja GC-a u Javi 8 i starijim verzijama

Prvo, istražimo JVM zastavice koje se odnose na bilježenje GC-a u Java verzijama prije Java 9.

2.1. -XX: + IspisGC

The -XX: + IspisGC zastava je alias za -verbozna: gc i uključuje osnovno bilježenje GC-a. U ovom načinu rada ispisuje se jedan redak za svaku mladu generaciju i svaku zbirku cijele generacije. Usmjerimo sada pažnju na pružanje detaljnih GC informacija.

2.2. -XX: + IspisGCDetalji

Slično imamo i zastavu -XX: + IspisGCDetalji naviknut aktivirati detaljno bilježenje GC-a umjesto -XX: + IspisGC.

Imajte na umu da je izlaz iz -XX: + IspisGCDetalji mijenja se ovisno o GC algoritmu koji se koristi.

Dalje ćemo pogledati bilješke naših dnevnika s podacima o datumu i vremenu.

2.3. -XX: + IspisGCDateStamps i -XX: + IspisGCTimeStamps

Možemo dodajte datume i podatke o vremenu u naše GC zapisnike korištenjem zastava -XX: + IspisGCDateStamps i -XX: + IspisGCTimeStamps, odnosno.

Prvi, -XX: + IspisGCDateStamps dodaje datum i vrijeme unosa u zapisnik na početak svakog retka.

Drugi, -XX: PrintGCTimeStamps dodaje vremensku oznaku u svaki redak dnevnika s pojedinostima o vremenu koje je prošlo (u sekundama) od pokretanja JVM-a.

2.4. -Xloggc

Napokon, dolazimo do preusmjeravanje GC dnevnika u datoteku. Ova zastavica uzima neobavezno ime datoteke kao argument koristeći sintaksu -Xloggc: datoteka a bez prisutnosti naziva datoteke, zapisnik GC zapisuje se u standardni out.

Uz to, ova zastava također postavlja -XX: PrintGC i -XX: PrintGCTimestamps zastave za nas. Pogledajmo nekoliko primjera:

Ako želimo zapisati GC zapisnik u standardni izlaz, možemo pokrenuti:

java -cp $ CLASSPATH -Xloggc mypackage.MainClass

Ili da zapišemo GC zapisnik u datoteku, pokrenuli bismo:

java -cp $ CLASSPATH -Xloggc: /tmp/gc.log mypackage.MainClass

3. GC zapisivanje zastavica u Javi 9 i novijim

U Javi 9+, -XX: PrintGC, alias za -verbozna: gc, zastario je u korist mogućnost objedinjene prijave, -Xlog. Sve ostale gore spomenute GC zastave i dalje vrijede u Javi 9+. Ova nova mogućnost bilježenja omogućuje nam odredite koje poruke treba prikazati, postavite razinu dnevnika i preusmjerite izlaz.

Možemo pokrenuti donju naredbu kako bismo vidjeli sve dostupne opcije za razine dnevnika, dekoratere dnevnika i skupove oznaka:

java -Xlog: zapisivanje = ispravljanje pogrešaka -verzija 

Na primjer, ako bismo željeli prijaviti sve GC poruke u datoteku, pokrenuli bismo:

java -cp $ CLASSPATH -Xlog: gc * = otklanjanje pogrešaka: datoteka = / tmp / gc.log mypackage.MainClass

Uz to, ova nova objedinjena zastava za bilježenje je ponovljiva, tako da možete, na primjer, prijavite sve GC poruke u standardni out i u datoteku:

java -cp $ CLASSPATH -Xlog: gc * = otklanjanje pogrešaka: stdout -Xlog: gc * = otklanjanje pogrešaka: datoteka = / tmp / gc.log mypackage.MainClass

4. Zaključak

U ovom smo članku pokazali kako bilježiti izlaz sakupljanja smeća i u Java 8 i u Java 9+, uključujući kako preusmjeriti taj izlaz u datoteku.


$config[zx-auto] not found$config[zx-overlay] not found