Szemétgyűjtemény naplózása Java fájlba

1. Áttekintés

A szemétgyűjtés a Java programozási nyelv csodája, amely automatikus memóriakezelést biztosít számunkra. A szemétszállítás elrejti a memória manuális lefoglalásának és elosztásának részleteit. Bár ez a mechanizmus fantasztikus, néha nem úgy működik, ahogy szeretnénk. Ebben az oktatóanyagban feltárjuk a Java-kat naplózási lehetőségek a szemétszállítás statisztikáihoz és fedezze fel, hogyan kell irányítsa át ezeket a statisztikákat egy fájlba.

2. GC naplózási zászlók a Java 8 és korábbi verziókban

Először fedezzük fel a JVM jelzőit, amelyek a Java 9 előtti Java verziók naplózására vonatkoznak.

2.1. -XX: + PrintGC

A -XX: + PrintGC zászló egy alias a -verbose: gc és bekapcsolja az alapvető GC naplózást. Ebben a módban egyetlen sort nyomtatnak minden fiatal generáció és minden teljes generációs gyűjtemény. Most fordítsuk figyelmünket a részletes GC-információk szolgáltatására.

2.2. -XX: + PrintGCDetails

Hasonlóképpen nálunk van a zászló -XX: + PrintGCDetails szokott aktiválja a részletes GC naplózást ahelyett -XX: + PrintGC.

Vegye figyelembe, hogy a -XX: + PrintGCDetails a használt GC algoritmus függvényében változik.

Ezután megvizsgáljuk a naplóink ​​dátum- és időinformációkkal való megjegyzését.

2.3. -XX: + PrintGCDateStamps és -XX: + PrintGCTimeStamps

Tudunk adjon hozzá dátumokat és időzítési információkat a GC naplóinkhoz a zászlók felhasználásával -XX: + PrintGCDateStamps és -XX: + PrintGCTimeStampsill.

Első, -XX: + PrintGCDateStamps minden nap elejéhez hozzáadja a naplóbejegyzés dátumát és idejét.

Második, -XX: PrintGCTimeStamps időbélyeget ad a napló minden sorához, amely részletezi a JVM elindítása óta eltelt időt (másodpercben).

2.4. -Xloggc

Végül elérkeztünk a GC napló átirányítása egy fájlba. Ez a jelző egy opcionális fájlnevet vesz fel argumentumként a szintaxist használva -Xloggc: fájl és fájlnév nélkül a GC napló kiírásra kerül.

Ezenkívül ez a zászló a -XX: PrintGC és -XX: PrintGCTimestamps zászlókat nekünk. Nézzünk meg néhány példát:

Ha a GC naplót szabványos kimenetre akarjuk írni, akkor futtathatjuk:

java -cp $ CLASSPATH -Xloggc mypackage.MainClass

Vagy ha a GC naplót fájlba akarjuk írni, futtatjuk:

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

3. GC Naplózási zászlók a Java 9 és újabb verziókban

Java 9+ verzióban -XX: PrintGC, a -verbose: gc, már elavult a egységes naplózási lehetőség, -Xlog. Az összes többi fent említett GC zászló továbbra is érvényes a Java 9+ verzióban. Ez az új naplózási lehetőség lehetővé teszi számunkra adja meg, mely üzeneteket kell megjeleníteni, állítsa be a naplószintet és irányítsa át a kimenetet.

Az alábbi paranccsal futtathatjuk a naplószintek, naplózók és címkekészletek összes rendelkezésre álló lehetőségét:

java -Xlog: naplózás = debug -verzió 

Például, ha az összes GC üzenetet egy fájlba akarjuk jegyezni, akkor a következőt futtatjuk:

java -cp $ CLASSPATH -Xlog: gc * = debug: file = / tmp / gc.log mypackage.MainClass

Ez az új egységes naplózási zászló megismételhető, így például naplózza az összes GC-üzenetet mind standard kimenetre, mind egy fájlba:

java -cp $ CLASSPATH -Xlog: gc * = debug: stdout -Xlog: gc * = debug: file = / tmp / gc.log mypackage.MainClass

4. Következtetés

Ebben a cikkben bemutattuk, hogyan kell naplózni a szemétgyűjtemény kimenetét mind a Java 8, mind a Java 9+ verzióban, ideértve azt is, hogyan lehet ezt a kimenetet fájlba irányítani.


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