Zber odpadu Prihlásenie do súboru v Jave

1. Prehľad

Zber odpadu je zázrakom programovacieho jazyka Java, ktorý nám poskytuje automatickú správu pamäte. Zber odpadu skrýva podrobnosti o tom, že je potrebné ručne alokovať a uvoľniť pamäť. Aj keď je tento mechanizmus fantastický, niekedy nefunguje tak, ako by sme chceli. V tomto výučbe sa pozrieme na Java možnosti protokolovania pre štatistiku zberu odpadu a zistiť, ako na to presmerovať tieto štatistiky do súboru.

2. Príznaky protokolovania GC v prostredí Java 8 a starších

Najskôr sa pozrime na príznaky JVM týkajúce sa protokolovania GC vo verziách Java pred verziou Java 9.

2.1. -XX: + PrintGC

The -XX: + PrintGC vlajka je alias pre -verbose: gc a zapne základné protokolovanie GC. V tomto režime je vytlačený jeden riadok pre každú mladú generáciu a každú kolekciu celej generácie. Poďme teraz upriamiť pozornosť na poskytovanie podrobných informácií o GC.

2.2. -XX: + PrintGCDetails

Podobne máme vlajku -XX: + PrintGCDetails zvyknutý aktivovať podrobné protokolovanie GC namiesto -XX: + PrintGC.

Všimnite si, že výstup z -XX: + PrintGCDetails zmeny v závislosti od použitého algoritmu GC.

Ďalej sa pozrieme na anotáciu našich protokolov informáciami o dátume a čase.

2.3. -XX: + PrintGCDateStamps a -XX: + PrintGCTimeStamps

Môžeme pridať do našich denníkov GC dátumy a údaje o čase využitím vlajok -XX: + PrintGCDateStamps a -XX: + PrintGCTimeStamps, resp.

Najprv, -XX: + PrintGCDateStamps na začiatok každého riadku pridá dátum a čas záznamu.

Po druhé, -XX: PrintGCTimeStamps pridáva časovú pečiatku do každého riadku denníka s podrobným údajom o uplynutom čase (v sekundách) od spustenia JVM.

2.4. -Xloggc

Nakoniec prichádzame k presmerovanie protokolu GC do súboru. Tento príznak vezme voliteľný názov súboru ako argument pomocou syntaxe -Xloggc: súbor a bez prítomnosti názvu súboru sa protokol GC zapíše na štandardný výstup.

Tento príznak navyše nastavuje aj -XX: PrintGC a -XX: PrintGCTimestamps vlajky pre nás. Pozrime sa na niekoľko príkladov:

Ak chceme zapísať log GC na štandardný výstup, môžeme spustiť:

java -cp $ CLASSPATH -Xloggc mypackage.MainClass

Alebo aby sme zapísali protokol GC do súboru, spustili by sme:

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

3. Príznaky protokolovania GC v prostredí Java 9 a novších

V prostredí Java 9+ -XX: PrintGC, alias pre -verbose: gc, bol zastaraný v prospech možnosť zjednoteného protokolovania, -Xlog. Všetky ostatné vyššie uvedené príznaky GC sú stále platné v prostredí Java 9+. Táto nová možnosť protokolovania nám to umožňuje určiť, ktoré správy sa majú zobraziť, nastaviť úroveň protokolu a presmerovať výstup.

Nižšie uvedeným príkazom môžeme zobraziť všetky dostupné možnosti pre úrovne denníka, dekorátory protokolov a sady značiek:

java -Xlog: logovanie = ladenie -verzia 

Napríklad, ak by sme chceli prihlásiť všetky správy GC do súboru, spustili by sme:

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

Tento nový príznak zjednoteného protokolovania je navyše opakovateľný, takže môžete napríklad zaznamenajte všetky správy GC do štandardného výstupu a do súboru:

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

4. Záver

V tomto článku sme si ukázali, ako protokolovať výstup zberu odpadu v prostredí Java 8 aj Java 9+ vrátane toho, ako tento výstup presmerovať do súboru.


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