4 Kasım 2018 Pazar

jmap komutu - JDK İle Gelir Çalışmakta Olan Uygulamadan Bazı Çıktılar Alır

Giriş
Çalışmakta olan uygulamadan bazı çıktılar alır. Söz dizimi şöyle
jmap [option] pid
jmap [option] executable core
jmap [option] [server-id@]remote-hostname-or-ip
-dump seçeneği
Açıklaması şöyle. Heap dump alır. Dump dosyası MAT, Visual VM gibi bir şeyle görülebilir.
Another very common situation is: use jmap to dump the process memory usage into a file, and then use jhat to analyze and view it. The format of jmap dump command is as follows:
Örnek - Only live objects
Açıklaması şöyle. Yani Memory Leak varsa kullanılır
... only live objects should be included in the memory dump. Live objects are the ones that are reachable and not eligible for garbage collection.
Şöyle yaparız
jmap -dump:live,format=b,file=/tmp/dump.hprof <pid>
Örnek
Şöyle yaparız
jmap -dump:file=/tmp/HEAP_DUMP_FILENAME.jmap JAVA_PROCESS_ID
Örnek
Şöyle yaparız. Format olarak b belirtiliyor
jmap -dump:format=b,file=/opt/tmp/heapdump.bin 37320
Örnek
Şöyle yaparız
# jmap -dump:format=b,file=/tmp/dump.dat 21711 Dumping heap to /tmp/dump.dat ... Heap dump file created
file seçeneği
Çıktı dosyasını belirtir

format seçeneği
b değerini alır.

GC.run seçeneği
Şöyle yaparız
jcmd 7544 GC.run
-heap seçeneği
Açıklaması şöyle
Use jmap -heap pid to view process heap memory usage, including the GC algorithm used, heap configuration parameters, and heap memory usage in each generation. 
Söz dizimi şöyle
jmap –heap <process-id>
Örnek
Şöyle yaparız
# jmap -heap 21711 Attaching to process ID 21711, please wait... Debugger attached successfully. Server compiler detected. JVM version is 20.10-b01 using thread-local object allocation. Parallel GC with 4 thread(s) Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70 MaxHeapSize = 2067791872 (1972.0MB) NewSize = 1310720 (1.25MB) MaxNewSize = 17592186044415 MB OldSize = 5439488 (5.1875MB) NewRatio = 2 SurvivorRatio = 8 PermSize = 21757952 (20.75MB) MaxPermSize = 85983232 (82.0MB) Heap Usage: PS Young Generation Eden Space: capacity = 6422528 (6.125MB) used = 5445552 (5.1932830810546875MB) free = 976976 (0.9317169189453125MB) 84.78829520089286% used From Space: capacity = 131072 (0.125MB) used = 98304 (0.09375MB) free = 32768 (0.03125MB) 75.0% used To Space: capacity = 131072 (0.125MB) used = 0 (0.0MB) free = 131072 (0.125MB) 0.0% used PS Old Generation capacity = 35258368 (33.625MB) used = 4119544 (3.9287033081054688MB) free = 31138824 (29.69629669189453MB) 11.683876009235595% used PS Perm Generation capacity = 52428800 (50.0MB) used = 26075168 (24.867218017578125MB) free = 26353632 (25.132781982421875MB) 49.73443603515625% used ....
-histo:live seçeneği
Açıklaması şöyle
Use jmap -histo[:live] pid to view the histogram of the number and size of objects in the heap memory.
Eğer live ile birlikte kullanırsak açıklaması şöyle.
it doesn't count the objects that are not referred by anyone.
Söz dizimi şöyle.
jmap -histo:live <process-id>
Örnek
Şöyle yaparız
# jmap -histo:live 21711 | more num #instances #bytes class name ---------------------------------------------- 1: 38445 5597736 <constMethodKlass> 2: 38445 5237288 <methodKlass> 3: 3500 3749504 <constantPoolKlass> 4: 60858 3242600 <symbolKlass> 5: 3500 2715264 <instanceKlassKlass> 6: 2796 2131424 <constantPoolCacheKlass> 7: 5543 1317400 [I 8: 13714 1010768 [C 9: 4752 1003344 [B 10: 1225 639656 <methodDataKlass> 11: 14194 454208 java.lang.String 12: 3809 396136 java.lang.Class 13: 4979 311952 [S 14: 5598 287064 [[I 15: 3028 266464 java.lang.reflect.Method 16: 280 163520 <objArrayKlassKlass> 17: 4355 139360 java.util.HashMap$Entry 18: 1869 138568 [Ljava.util.HashMap$Entry; 19: 2443 97720 java.util.LinkedHashMap$Entry 20: 2072 82880 java.lang.ref.SoftReference 21: 1807 71528 [Ljava.lang.Object; 22: 2206 70592 java.lang.ref.WeakReference 23: 934 52304 java.util.LinkedHashMap 24: 871 48776 java.beans.MethodDescriptor 25: 1442 46144 java.util.concurrent.ConcurrentHashMap$HashEntry 26: 804 38592 java.util.HashMap 27: 948 37920 java.util.concurrent.ConcurrentHashMap$Segment 28: 1621 35696 [Ljava.lang.Class; 29: 1313 34880 [Ljava.lang.String; 30: 1396 33504 java.util.LinkedList$Entry 31: 462 33264 java.lang.reflect.Field 32: 1024 32768 java.util.Hashtable$Entry 33: 948 31440 [Ljava.util.concurrent.ConcurrentHashMap$HashEntry;
Class name için kısaltmaların açıklaması şöyle
B byte C char D double F float I int J long Z boolean
-permstat seçeneği
Açıklaması şöyle
Print the class loader of the process and the persistent generation object information loaded by the class loader, output: class loader name, whether the object is alive (unreliable), object address, parent class loader, loaded class size and other information, ...
Örnek
Şöyle yaparız.
jmap -permstat pid















Hiç yorum yok:

Yorum Gönder