Evaluation Warning: The document was created with Spire.Doc for JAVA.

printf "%x\n" 29616 转为十六进制

jstack <pid> | head -100 获取Java进程中前100行的线程堆栈信息

jstack 27 | grep '73b0' -A 100 > ./cpu-100.txt

jstat -gc <pid> 1000 200

使用的内存S0C+ S1C+ EC+OC

jstat -gcutil <pid> 1000 200

ls -l /proc/27/task | wc -l

jmap -dump:format=b,file=/path/to/dumpfile <pid>

将Dump文件下载回本地,然后可以使用Eclipse的MAT(Memory Analyzer)或者JDK自带的JVisualVM打开日志文件

img1

jmap -histo:live 27 查看堆内存存活的对象。

jmap -heap pid JVM内存的配置

jmap -clstats 7984 查看类加载情况

堆外内存跟踪 NativeMemoryTracking

Native Memory Tracking (NMT) 是Hotspot VM用来分析VM内部内存使用情况的一个功能。我们可以利用jcmd(jdk自带)这个工具来访问NMT的数据。

MT必须先通过VM启动参数中打开,不过要注意的是,打开NMT会带来5%-10%的性能损耗

-XX:NativeMemoryTracking=[off | summary | detail]

off: 默认关闭

summary: 只统计各个分类的内存使用情况.

detail: Collect memory usage by individual call sites.

jcmd pid VM.native_memory detail scale=MB > temp.txt

jcmd 27 VM.native_memory scale=MB