jvm 性能调优之 jmap
生活随笔
收集整理的這篇文章主要介紹了
jvm 性能调优之 jmap
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
概述
Java Memory Map,打印出某個java進程內存中所有‘對象’的情況(如:產生那些對象,及其數量),可以輸出所有內存中對象的工具,甚至可以將JVM 中的heap,以二進制輸出成文本。
Usage:jmap [option] <pid>(to connect to running process)jmap [option] <executable <core>(to connect to a core file)jmap [option] [server_id@]<remote server IP or hostname>(to connect to remote debug server)where <option> is one of:<none> to print same info as Solaris pmap-heap to print java heap summary-histo[:live] to print histogram of java object heap; if the "live"suboption is specified, only count live objects-clstats to print class loader statistics-finalizerinfo to print information on objects awaiting finalization-dump:<dump-options> to dump java heap in hprof binary formatdump-options:live dump only live objects; if not specified,all objects in the heap are dumped.format=b binary formatfile=<file> dump heap to <file>Example: jmap -dump:live,format=b,file=heap.bin <pid>-F force. Use with -dump:<dump-options> <pid> or -histoto force a heap dump or histogram when <pid> does notrespond. The "live" suboption is not supportedin this mode.-h | -help to print this help message-J<flag> to pass <flag> directly to the runtime system使用說明
options
顯示JVM版本信息
(base) ? ~ jmap 10375 Attaching to process ID 10375, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.77-b03heap
打印jvm線程各個分區的摘要
(base) ? ~ jmap -heap 10375 Attaching to process ID 10375, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.77-b03using thread-local object allocation. Parallel GC with 4 thread(s)Heap Configuration:MinHeapFreeRatio = 0MaxHeapFreeRatio = 100 # 空余空間百分比,超過這個值堆會減小,直到 minsizeMaxHeapSize = 4294967296 (4096.0MB)NewSize = 89128960 (85.0MB)MaxNewSize = 1431306240 (1365.0MB)OldSize = 179306496 (171.0MB)NewRatio = 2 # 老年代和年輕代比例是2:1SurvivorRatio = 8 # eden 區和單個survivor區的比例是8:1MetaspaceSize = 21807104 (20.796875MB)CompressedClassSpaceSize = 1073741824 (1024.0MB)MaxMetaspaceSize = 17592186044415 MBG1HeapRegionSize = 0 (0.0MB)Heap Usage: PS Young Generation Eden Space:capacity = 304611328 (290.5MB)used = 71829624 (68.50206756591797MB)free = 232781704 (221.99793243408203MB)23.58074615005782% used From Space:capacity = 10485760 (10.0MB)used = 10252080 (9.777145385742188MB)free = 233680 (0.2228546142578125MB)97.77145385742188% used To Space:capacity = 17301504 (16.5MB)used = 0 (0.0MB)free = 17301504 (16.5MB)0.0% used PS Old Generationcapacity = 161480704 (154.0MB)used = 34655000 (33.049583435058594MB)free = 126825704 (120.9504165649414MB)21.460768464323763% used17424 interned Strings occupying 1782392 bytes.histo[:live]
打印內存中對象直方圖
num #instances #bytes class name ----------------------------------------------1: 150075 19363864 [C2: 29583 13819960 [B3: 100510 2412240 java.lang.String4: 3878 2052664 [I5: 36845 1813272 [Ljava.lang.Object;6: 28568 914176 java.util.AbstractList$Itr7: 9883 632512 java.util.stream.ReferencePipeline$28: 15161 606440 org.jdom.Attribute9: 9885 553560 java.util.stream.ReferencePipeline$Head10: 4910 546088 java.lang.Class11: 10206 489888 gnu.trove.THashMap12: 11834 473360 java.util.LinkedHashMap$Entry13: 9883 395320 java.util.HashMap$EntrySpliterator14: 11728 375296 java.io.File15: 14090 338160 java.lang.StringBuilder16: 19908 318528 java.lang.Object17: 9883 316256 java.util.stream.FindOps$FindOp18: 9799 313568 java.util.HashMap$Node19: 9744 311808 java.util.concurrent.ConcurrentHashMap$Node20: 1184 297480 [Ljava.util.HashMap$Node;21: 9125 292000 java.util.ArrayList$Itr22: 10211 245064 java.util.ArrayListclass name對應的就是Class文件里的class的標識
B代表byte
C代表char
D代表double
F代表float
I代表int
J代表long
Z代表boolean
前邊有[代表數組,[I 就相當于int[], 對象用[L+類名表示
clstats
(base) ? ~ jmap -clstats 30559 Attaching to process ID 30559, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.77-b03 finding class loader instances ..done. computing per loader stat ..done. please wait.. computing liveness..................liveness analysis may be inaccurate ... class_loader classes bytes parent_loader alive? type<bootstrap> 1883 3292097 null live <internal> 0x000000079460d2e0 1 1471 null dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x000000079460dd20 1 1471 null dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x000000079460eda0 1 1472 0x0000000794424050 dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x000000079460d3a8 1 1471 null dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x000000079460dde8 2 4839 null dead javax/management/remote/rmi/NoCallStackClassLoader@0x00000007c021d838 0x00000007b599d9d0 1 1472 0x0000000794424050 dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x0000000794456608 17 44376 null live sun/misc/Launcher$ExtClassLoader@0x00000007c000fa30 0x000000079460d470 1 1471 null dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x000000079460e8b0 1 1471 0x0000000794424050 dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x00000007b599d908 1 1472 null dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x0000000794424050 2793 4890978 0x00000007944565a8 live java/net/URLClassLoader@0x00000007c000ecb8 0x000000079460d538 1 1471 null dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x000000079460e9f8 1 1472 0x0000000794424050 dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x00000007b3502e08 1 881 null dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x00000007b599d840 1 1471 0x0000000794424050 dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x000000079460d600 1 1471 null dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x000000079460dec0 4 4029 null dead javax/management/remote/rmi/NoCallStackClassLoader@0x00000007c021d838 0x00000007b599d778 1 1471 0x0000000794424050 dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x00000007b599ee78 1 1471 null dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x000000079460d6c8 1 1471 null dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x00000007b599c130 11 36886 0x00000007944565a8 dead sun/reflect/misc/MethodUtil@0x00000007c025b228 0x00000007b599d6b0 1 1471 0x0000000794424050 dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x00000007944565a8 31 118741 0x0000000794456608 live sun/misc/Launcher$AppClassLoader@0x00000007c000f688 0x000000079460db90 1 1471 null dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x00000007949dfb68 0 0 0x00000007944565a8 dead java/util/ResourceBundle$RBClassLoader@0x00000007c00a8318 0x000000079460d218 1 1471 null dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x000000079460dc58 1 1471 null dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x000000079460ecd8 1 1472 0x0000000794424050 dead sun/reflect/DelegatingClassLoader@0x00000007c0009df8 0x00000007945f1620 0 0 0x00000007944565a8 live javax/management/remote/rmi/RMIConnectionImpl$CombinedClassLoader@0x00000007c0258430 0x00000007945f1860 0 0 0x00000007944565a8 live javax/management/remote/rmi/RMIConnectionImpl$CombinedClassLoader$ClassLoaderWrapper@0x00000007c0258748 0x00000007945f1aa0 0 0 0x00000007944565a8 live com/sun/jmx/remote/util/ClassLoaderWithRepository@0x00000007c0257ef8total = 32 4762 8422252 N/A alive=7, dead=25 N/Adump
導出堆棧內存快照,以供分析。
dump-options:live dump only live objects; if not specified,all objects in the heap are dumped.format=b binary formatfile=<file> dump heap to <file>Example: jmap -dump:live,format=b,file=heap.bin <pid>總共有三種方式導出內存快照
setp 1 使用gdb生成core.4990的core文件
# sudo gdb -q --pid=4990 (gdb) generate-core-file (gdb) detach (gdb) quitstep 2 使用jmap 生成 dump文件
sudo jmap -dump:format=b,file=heap.hprof /usr/xxx/jdk1.6.0_29/bin/java core.4990總結
以上是生活随笔為你收集整理的jvm 性能调优之 jmap的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 背景差法目标识别python_运动目标检
- 下一篇: 小猿圈python金角大王_小猿圈pyt