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