2018年5月

jcmd 命令

jps 首先做到 pid
jcmd help
jcmd $pid help
jcmd $pid help GC.heap_dump
//列出 JVM flags
jcmd $pid help VM.flags
jcmd $pid help VM.flags -all // 列出所有

jcmd $pid GC.heap_dump heap.hprof
可能是最新的 JVM 版本 支持使用 -all 选项, 不做full GC, dump 所有对象. 类似于 jmap 不用 live 选项
jcmd $pid GC.heap_dump -all
//-all : [optional] Dump all objects, including unreachable objects (BOOLEAN, false)

JVM 中的 system 和 main 线程组 ThreadGroup

Java有 Thread 和 ThreadGroup. ThreadGroup 又可以嵌套. 今天在查看 线程 dump 的时候, 看到2个系统的 thread group: System 和 main. 仔细google 了一下, 貌似JVM 自身的, 比如 GC Daemon, Finalizer, Reference Handler, RMI TCP Accept-0 这些都是 JVM 自带的, 都在 system group 下. main group 是 system group 下的子 group, 它包含: DefaultThreadPool%d%d.

refer: https://www.javaworld.com/article/2074481/java-concurrency/java-101--understanding-java-threads--part-4---thread-groups--volatility--and-threa.html