JVM(JAVA)内存分析

JVM分析命令

/usr/java/java/bin/jps
/usr/java/java/bin/jstat -gc 31525 1000
/usr/java/java/bin/jstack 31525
/usr/java/java/bin/jstat -gccapacity 31525  
/usr/java/java/bin/jstat -gcutil 31525 1000 100 
/usr/java/java/bin/jmap -heap 31525

 

堆栈及线程分析

ps -eLf | grep -i bootstrap | awk '{print $2,$4,$9}'|sort -k3 > time.txt
/usr/java/java/bin/jstack 30912 > stack0629.txt
ps Hh -eo pid,tid,pcpu | sort -nk3 |tail -n 50

ps -mp 28241 -o THREAD,tid,time | sort -k9
root    0.0  23    - schedu    -      - 32544 02:51:57
root    0.0  23    - schedu    -      - 32455 02:52:00
root    0.0  23    - schedu    -      - 32432 02:52:01
root    0.0  23    - schedu    -      - 32741 02:52:01 

将指定的线程ID转换为16进制格式:

printf "%x\n" 32544

 

/usr/java/java/bin/jstack 30912 |grep 352b -A 60
jstack -l 22222

l长列表. 打印关于锁的附加信息,例如属于java.util.concurrent的ownable synchronizers列表.

 

NMT分析

启动参数加上

-XX:+UnlockDiagnosticVMOptions -XX:NativeMemoryTracking=detail -XX:+PrintNMTStatistics

 

/usr/java/java/bin/jstat -gccapacity 31525  单位KB(千字节)
/usr/java/java/bin/jstat -gcutil 31525 1000 100 

/usr/java/java/bin/jmap -heap 31525

   MinHeapFreeRatio         = 0

   MaxHeapFreeRatio         = 100

   MaxHeapSize              = 7516192768 (7168.0MB)

   NewSize                  = 2505048064 (2389.0MB)

   MaxNewSize               = 2505048064 (2389.0MB)

   OldSize                  = 5011144704 (4779.0MB)

   NewRatio                 = 2

   SurvivorRatio            = 8

   MetaspaceSize            = 21807104 (20.796875MB)

   CompressedClassSpaceSize = 1073741824 (1024.0MB)

   MaxMetaspaceSize         = 17592186044415 MB

   G1HeapRegionSize         = 0 (0.0MB)

 

/usr/java/java/bin/jcmd 31525  VM.native_memory baseline
/usr/java/java/bin/jcmd 31525  VM.native_memory summary.diff 
/usr/java/java/bin/jcmd 31525  VM.native_memory scale=MB

/usr/java/java/bin/jcmd 31525  VM.native_memory detail scale=MB > 111.txt

Native Memory Tracking:


Total: reserved=11357MB, committed=10142MB

-                 Java Heap (reserved=7168MB, committed=7168MB)

                            (mmap: reserved=7168MB, committed=7168MB) 

 

-                     Class (reserved=1121MB, committed=106MB)

                            (classes #13069)

                            (malloc=31MB #28704) 

                            (mmap: reserved=1090MB, committed=76MB) 

 

-                    Thread (reserved=582MB, committed=582MB)

                            (thread #578)

                            (stack: reserved=579MB, committed=579MB)

                            (malloc=2MB #3462) 

                            (arena=1MB #1139)

 

-                      Code (reserved=252MB, committed=51MB)

                            (malloc=8MB #10741) 

                            (mmap: reserved=244MB, committed=43MB) 

 

-                        GC (reserved=295MB, committed=295MB)

                            (malloc=33MB #540) 

                            (mmap: reserved=262MB, committed=262MB) 

 

-                  Compiler (reserved=1MB, committed=1MB)

                            (malloc=1MB #2220) 

 

-                  Internal (reserved=1694MB, committed=1694MB)

                            (malloc=1693MB #14833412) 

 

-                    Symbol (reserved=14MB, committed=14MB)

                            (malloc=13MB #132556) 

                            (arena=2MB #1)

 

-    Native Memory Tracking (reserved=230MB, committed=230MB)

                            (tracking overhead=229MB)

 

查看默认参数值

/usr/java/java/bin/java -XX:+PrintFlagsFinal -version | grep DirectMemorySize

 

查看进程的内存映射

pmap -q -x 31525 | sort -n -k3 > 222.txt

 

查看当前进程的所有地址

cat /proc/{pid}/smaps > smpas.txt

 

 

内存dump

gdb attach 13047
dump memory /tmp/0x7faaf0000000-0x7faaf2701000.dump 0x7faaf0000000 0x7faaf2701000

dump binary memory ./123.txt 0x7faaf0000000 0x7faaf2701000

strings -10 /tmp/0x7faaf0000000-0x7faaf2701000.dump

 

/usr/java/java/bin/jstack 30912 
posted @ 2023-01-31 09:35  killerqi  阅读(94)  评论(0编辑  收藏  举报