23 Ağustos 2020 Pazar

jcmd komutu - Çalışmakta Olan Uygulamaya Diagnostic Command Requests Gönderir

Giriş
Açıklaması şöyle
As per the manual, jcmd is a utility which sends diagnostic command requests to a running Java Virtual Machine i.e. JVM.
This utility gets various runtime information from a jvm. And, thing to note is, it must be used on the same machine on which jvm is running.
Bu komutun çıktısı şöyle. İlk sütun PID numarası, ikinci sütun uygulamanın ana sınıfı
$ jcmd
15308 jdk.jcmd/sun.tools.jcmd.JCmd
1836 se.hirt.jmc.tutorial.donothing.DoNothing
Örnek
Bir java uygulamasının ana sınıfını görmek için şöyle yaparız. find /i ile case sensitive olmadığını belirtiriz. find /n ile satır numarasını alırız.
jcmd | find /I /N "sun.tools.jconsole.JConsole"


IF "%ERRORLEVEL%" GTR "0" (
    jconsole.exe
)

IF %ERRORLEVEL% EQU 0 (
    echo Programm is running 
) 
FJR.start seçeneği
"Flight Recorder" aracını başlatmak için kullanılır. PID numarası 1836 olan uygulamak için şöyle yaparız
jcmd 1836 FJR.start duration=33s filename=start.recorder.fjr
Bu dosya "Mission Control" ile görüntülenebilir.

GC.class_histogram seçeneği
Metaspace bilgisini yazar
Örnek
Şöyle yaparız
# Ekrana
jcmd {pid} GC.class_histogram

# Dosyaya
jcmd {pid} GC.class_histogram filename={file-path}

GC.heap_dump seçeneği
Çalışmakta olan uygulamanın heap dump çıktısını oluşturur

Örnek
Şöyle yaparız
jcmd 37320 GC.heap_dump /opt/tmp/heapdump.bin
4. Thread.print seçeneği

5. VM seçenekleri
jcmd komutu VM Seçenekleri yazısına taşıdım


Off-Heap Seçenekleri
Off-Heap yerine bazen "Direct Memory" de deniliyor. Uygulamayı bazı seçenekler ile çalıştırmış olmak gerekir. Şöyle yaparız
-XX:NativeMemoryTracking=detail-XX:+UnlockDiagnosticVMOptions -XX:+PrintNMTStatistics

Hiç yorum yok:

Yorum Gönder