-Xtgc izleme

Bir ya da daha çok TGC (izleme çöp toplayıcısı) izlemesini etkinleştirerek, -verbose:gc seçeneğini kullanarak daha ayrıntılı çöp toplama bilgileri elde edebilirsiniz.

Bu kısım, kullanılabilir farklı -Xtgc izlemelerini özetler. Çıkış standart çıkışa yazılır. Parametreleri virgüllerle ayırarak aynı anda birden çok izleme etkinleştirilebilir; örneğin, -Xtgc:backtrace,compaction.

  • xtgc-backtrace
  • xtgc-compaction
  • xtgc-concurrent
  • xtgc-dump
  • xtgc-excessivegc
  • xtgc-freelist
  • xtgc-parallel
  • xtgc-scavenger
  • xtgc-terse

Bkz. -Xtgc seçeneği.

-Xtgc:geriye dönük izleme

Bu izleme, atık toplama işlemini tetikleyen iş parçacığını izleyen bilgileri gösterir.

Bir System.gc() için bu, aşağıdaki gibi olabilir:
"main" (0x0003691C)
Bu, GC ' nin "main" ve osThread 0x0003691Cadlı iş parçacığı tarafından tetiklendiğini gösterir.

GC ' yi tetikleyen iş parçacığını gösteren, her bir genel ya da leş yiyen kaynak grubu için bir satır yazdırılır.

-Xtgc:compaction

Bu izleme, sıkıştırmayla ilgili bilgileri gösterir.

İzleme şuna benzer:

Compact(3): reason = 7 (forced compaction)
Compact(3): Thread 0, setup stage: 8 ms.
Compact(3): Thread 0, move stage: handled 42842 objects in 13 ms, bytes moved 2258028.
Compact(3): Thread 0, fixup stage: handled 0 objects in 0 ms, root fixup time 1 ms.
Compact(3): Thread 1, setup stage: 0 ms.
Compact(3): Thread 1, move stage: handled 35011 objects in 8 ms, bytes moved 2178352.
Compact(3): Thread 1, fixup stage: handled 74246 objects in 13 ms, root fixup time 0 ms.
Compact(3): Thread 2, setup stage: 0 ms.
Compact(3): Thread 2, move stage: handled 44795 objects in 32 ms, bytes moved 2324172.
Compact(3): Thread 2, fixup stage: handled 6099 objects in 1 ms, root fixup time 0 ms.
Compact(3): Thread 3, setup stage: 8 ms.
Compact(3): Thread 3, move stage: handled 0 objects in 0 ms, bytes moved 0.
Compact(3): Thread 3, fixup stage: handled 44797 objects in 7 ms, root fixup time 0 ms.

Bu izleme, "7" nedeniyle, üçüncü genel GC sırasında sıkıştırmanın oluştuğunu gösterir. Bu durumda, dört iş parçacığı sıkıştırma gerçekleştiriyor. İzleme, kuruluş, taşıma ve düzeltme sırasında her iş parçacığı tarafından gerçekleştirilen işi gösterir. Her aşama için süre, her iş parçacığı tarafından işlenen nesnelerin sayısıyla birlikte gösterilir.

-Xtgc:koşutzamanlı

Bu izleme, koşutzamanlı işaret yardımcısı iş parçacığına ilişkin temel ek bilgileri görüntüler.

Not: Bu seçeneği -Xgcpolicy:balanced seçeneğiyle kullanamazsınız. Bu iki seçeneği birlikte kullanmayı denerseniz, JVM başlamaz.
<CONCURRENT GC BK thread 0x0002645F activated after GC(5)>

<CONCURRENT GC BK thread 0x0002645F (started after GC(5)) traced 25435>

Bu izleme, artalan iş parçacığının ne zaman etkinleştirildiğini ve gerçekleştirildiği izleme miktarını (bayt cinsinden) gösterir.

-Xtgc:dump

Bu izleme, genel bir atık toplama işleminin tarama aşamasından sonra ek bilgileri gösterir.

Bu çok büyük bir izleme-bir GC ' nin çıkışından bir örnek:

<GC(4) 13F9FE44 freelen=x000002C4 -- x00000038 spec/jbb/Stock>
<GC(4) 13FA0140 freelen=x00000010>
<GC(4) 13FA0150 freelen=x00000050 -- x0000001C java/lang/String>
<GC(4) 13FA0410 freelen=x000002C4 -- x00000024 spec/jbb/infra/Collections/
     longBTreeNode>
<GC(4) 13FA0788 freelen=x00000004 -- x00000050 java/lang/Object[]>
<GC(4) 13FA0864 freelen=x00000010>
<GC(4) 13FA0874 freelen=x0000005C -- x0000001C java/lang/String>
<GC(4) 13FA0B4C freelen=x000002C4 -- x00000038 spec/jbb/Stock>
<GC(4) 13FA0E48 freelen=x00000010>
<GC(4) 13FA0E58 freelen=x00000068 -- x0000001C java/lang/String>
<GC(4) 13FA1148 freelen=x000002C4 -- x00000038 spec/jbb/Stock>
<GC(4) 13FA1444 freelen=x00000010>
<GC(4) 13FA1454 freelen=x0000006C -- x0000001C java/lang/String>
<GC(4) 13FA174C freelen=x000002C4 -- x00000038 spec/jbb/Stock>
<GC(4) 13FA1A48 freelen=x00000010>
<GC(4) 13FA1A58 freelen=x00000054 -- x0000001C java/lang/String>
<GC(4) 13FA1D20 freelen=x000002C4 -- x00000038 spec/jbb/Stock>
<GC(4) 13FA201C freelen=x00000010>
<GC(4) 13FA202C freelen=x00000044 -- x0000001C java/lang/String>
<GC(4) 13FA22D4 freelen=x000002C4 -- x00000038 spec/jbb/Stock>
<GC(4) 13FA25D0 freelen=x00000010>
<GC(4) 13FA25E0 freelen=x00000048 -- x0000001C java/lang/String>
<GC(4) 13FA2890 freelen=x000002C4 -- x00000038 spec/jbb/Stock>
<GC(4) 13FA2B8C freelen=x00000010>
<GC(4) 13FA2B9C freelen=x00000068 -- x0000001C java/lang/String>
<GC(4) 13FA2E8C freelen=x000002C4 -- x00000038 spec/jbb/Stock>
<GC(4) 13FA3188 freelen=x00000010>

Karanlık madde (genellikle çok küçük oldukları için serbest listede olmayan serbest parçalar) de dahil olmak üzere, sistemdeki her serbest parça için bir çıkış satırı yazdırılır. Her satır, temel adresi ve parçanın bayt cinsinden boyutunu içerir. Öbek bir nesne tarafından izlerse, nesnenin büyüklüğü ve sınıf adı da yazdırılır.

-Xtgc:excessiveGC

Bu izleme, atık toplama döngülerine ilişkin istatistikleri gösterir.

Anlamsız veri toplama döngüsü tamamlandıktan sonra bir izleme girişi üretilir:

excessiveGC: gcid="10" intimems="122.269" outtimems="1.721" \
             percent="98.61" averagepercent="37.89"

Bu izleme, çöp toplama işlemini gerçekleştirmek için ne kadar zaman harcandığını ve çöp toplama dışında ne kadar zaman harcandığını gösterir. Bu örnekte, 10 numaralı atık toplama döngüsünün tamamlanması 122.269 ms sürdü ve 9 ile 10 numaralı kaynak grupları arasında 1.721 ms geçti. Bu istatistikler, veri toplama işleminin 9. veri toplama işleminin sonundan 10. veri toplama işleminin sonuna kadar olan sürelerin% 98.61' ini oluşturmuş olduğunu göstermektedir. Atık toplama için harcanan ortalama süre 37.89' dur.

Atık toplamadaki ortalama süre %95 'e ulaştığında, ek izleme girişleri üretilir:

excessiveGC: gcid="65" percentreclaimed="1.70" freedelta="285728" \
             activesize="16777216" currentsize="16777216" maxiumumsize="16777216"

Bu izleme, ne kadar çöp toplandığını gösteriyor. Bu örnekte 285728 bayt, toplam yığın boyutunun 1.7% 'sini oluşturan atık toplama 65 tarafından geri istendi. Örnek ayrıca, yığın boyutunun boyut üst sınırına genişlediğini de gösterir (bkz. -Xmx).

Ortalama atık toplama süresi %95 'e ulaştığında ve bir toplama işlemi tarafından geri kazanılan boş alan yüzdesi %3 'ün altına düştüğünde, başka bir izleme girişi üretilir:

excessiveGC: gcid="65" percentreclaimed="1.70" minimum="3.00" excessive gc raised

JVM daha sonra bir OutOfMemoryErroratar.

-Xtgc:freelist

Bu izleme, atık toplama işleminden önce, son GC ' den bu yana boş liste ve ayırma istatistikleriyle ilgili bilgileri yazdırır.

İzleme, "ertelenmiş" girişler de içinde olmak üzere, serbest listedeki öğelerin sayısını yazdırır (leşçiyle birlikte, kullanılmayan semispace ertelenmiş bir serbest liste girişidir). TLH ve TLH olmayan ayırmalar için bu, toplam ayırma sayısını, ortalama ayırma boyutunu ve ayırma sırasında atılan toplam bayt sayısını yazdırır. TLH olmayan ayırmalar için, yeterince büyük bir giriş bulunmadan önce aranan girdilerin ortalama sayısı da dahil edilir.

 *8* free         0
  *8* deferred     0
total                0
<Alloc TLH: count 3588, size 3107, discard 31>
<  non-TLH: count 6219, search 0, size 183, discard 0>

-Xtgc:paralel

Bu izleme, genel bir atık toplama işleminin işaretleme ve tarama aşamaları sırasında koşut iş parçacıklarının etkinliğine ilişkin istatistikleri gösterir.

Mark:   busy  stall  tail   acquire   release
   0:      30    30     0        0         3
   1:      53     7     0       91        94
   2:      29    31     0       37        37
   3:      37    24     0      243       237
Sweep:  busy   idle sections 127  merge 0
   0:      10     0    96
   1:       8     1     0
   2:       8     1    31
   3:       8     1     0

Bu izleme, atık toplama işleminin işaretleme ve tarama aşamaları sırasında her iş parçacığı tarafından yapılan işle birlikte dört iş parçacığını (0-3) gösterir.

Çöp toplama işleminin işaret aşaması için, "meşgul", "durdu" ve "kuyruk" durumlarında harcanan süre (milisaniye) gösterilir. İşaret aşaması sırasında edinilen ve serbest bırakılan her iş parçacığının iş paketi sayısı da gösterilir.

Çöp toplama işleminin tarama aşamasında, "meşgul" ve "boşta" durumlarında harcanan süre gösterilir (milisaniye cinsinden). Toplam (127) de dahil olmak üzere, her iş parçacığı tarafından işlenen tarama parçalarının sayısı da gösterilir. Toplam birleştirme süresi de gösterilir (0ms).

-Xtgc:leştirici

Bu iz, her bir leş yiyicisi koleksiyonunun ardından bir histogram yazdırır.

Not: Bu seçeneği -Xgcpolicy:balanced seçeneğiyle kullanamazsınız. Bu iki seçeneği birlikte kullanmayı denerseniz, JVM başlamaz.

Bir grafik, her sınıfın oluşum sayısı ve her nesnenin yaşı (kaç kez çevrildiği) ile birlikte, kurtulan uzayda kalan nesnelerin farklı sınıflarını gösterir. Tek bir leşten alınan çıkışın bir örneği aşağıdaki gibi gösterilir:

{SCAV: tgcScavenger OBJECT HISTOGRAM}

{SCAV: | class | instances of age 0-14 in semi-space |
{SCAV: java/lang/ref/SoftReference 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0
{SCAV: java/io/FileOutputStream 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0
{SCAV: sun/nio/cs/StreamEncoder$ConverterSE 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0
{SCAV: java/io/FileInputStream 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
{SCAV: char[][] 0 102 0 0 0 0 0 0 0 0 0 0 0 0 0
{SCAV: java/lang/ref/SoftReference[] 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0
{SCAV: java/io/BufferedOutputStream 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0
{SCAV: java/io/BufferedWriter 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0
{SCAV: java/io/OutputStreamWriter 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0
{SCAV: java/io/PrintStream 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0
{SCAV: java/io/BufferedInputStream 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
{SCAV: java/lang/Thread[] 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0
{SCAV: java/lang/ThreadGroup[] 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0
{SCAV: sun/io/ByteToCharCp1252 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
{SCAV: sun/io/CharToByteCp1252 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0

-Xtgc:terse

Bu izleme, bir atık toplama işleminden önce ve sonra tüm yığın içeriğini dökümünü sağlar.

Bu son derece büyük bir iz. Öbekteki her nesne ya da boş parça için bir izleme çıkışı satırı üretilir. Her satır temel adresi, ayrılmış bir nesne ise "a" ve serbest bir parçaysa "f" yi, bayt cinsinden yığın boyutunu ve bir nesneyse sınıf adını içerir. Bir örnek aşağıdaki gibi gösterilir:

*DH(1)* 230AD778 a x0000001C java/lang/String
*DH(1)* 230AD794 a x00000048 char[]
*DH(1)* 230AD7DC a x00000018 java/lang/StringBuffer
*DH(1)* 230AD7F4 a x00000030 char[]
*DH(1)* 230AD824 a x00000054 char[]
*DH(1)* 230AD878 a x0000001C java/lang/String
*DH(1)* 230AD894 a x00000018 java/util/HashMapEntry
*DH(1)* 230AD8AC a x0000004C char[]
*DH(1)* 230AD8F8 a x0000001C java/lang/String
*DH(1)* 230AD914 a x0000004C char[]
*DH(1)* 230AD960 a x00000018 char[]
*DH(1)* 230AD978 a x0000001C java/lang/String
*DH(1)* 230AD994 a x00000018 char[]
*DH(1)* 230AD9AC a x00000018 java/lang/StringBuffer
*DH(1)* 230AD9C4 a x00000030 char[]
*DH(1)* 230AD9F4 a x00000054 char[]
*DH(1)* 230ADA48 a x0000001C java/lang/String
*DH(1)* 230ADA64 a x00000018 java/util/HashMapEntry
*DH(1)* 230ADA7C a x00000050 char[]
*DH(1)* 230ADACC a x0000001C java/lang/String
*DH(1)* 230ADAE8 a x00000050 char[]
*DH(1)* 230ADB38 a x00000018 char[]
*DH(1)* 230ADB50 a x0000001C java/lang/String
*DH(1)* 230ADB6C a x00000018 char[]
*DH(1)* 230ADB84 a x00000018 java/lang/StringBuffer
*DH(1)* 230ADB9C a x00000030 char[]
*DH(1)* 230ADBCC a x00000054 char[]
*DH(1)* 230ADC20 a x0000001C java/lang/String
*DH(1)* 230ADC3C a x00000018 java/util/HashMapEntry
*DH(1)* 230ADC54 a x0000004C char[]