1. jmap
(1)分析堆信息
jmap -heap java_pid
(2) 导出 java进程 5460 的堆内容 到文件 heap.map ,然后使用 jhat 分析
jmap -dump:live,file=heap.map 5460
jhat heap.map
(3)打印等待回收的对象信息
jmap -finalizerinfo java_pid
(4) 打印永久区状态
jmap -permstat java_pid
2. jinfo
jinfo 打印指定java进程 、核心文件、远程服务的配置信息。配置信息包括Java系统属性和Java 虚拟机命令行参数;如果给定进程运行在64位机器上,你可能需要指定-J-d64 选项。
说明:这个功能在未来JDK中可能不可用或不被支持(java8 及 更高版本)
无选项 :打印 命令行参数和java 系统属性键值对
-flag name 打印指定name 的命令行参数
-flag [+-]name 启用或禁用给定的命令行参数
-flag name=value 设定命令行参数到指定值
-flags 打印传递给虚拟机的命令参数
-sysprops 打印java 系统属性
-h 打印帮助信息
在jdk1.7.0_09测试之后,仅 PermSize MaxPermSize 这两个参数支持 jinfo -flag name pid 输出
(1)打印参数值
$ jinfo -flag PermSize 5460
-XX:PermSize=268435456
(2)打印系统属性
jinfo -sysprops 5460
3. jstat
参考链接 docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jstat.html#class_option
(1)内存模型使用率及GC次数和用时/百分比
jstat -gcutil java_pid
S1使用率/S2使用率/初生代使用率/老年代使用率/永久区使用率/新生代GC次数/新生代GC用时s/FullGC次数/FullGC用时s/GC总共用时
(2) 打印类装载信息
jstat -class java_pid
(3) 即时编译信息
jstat -compiler java_pid
(4)内存模型使用率及GC次数和用时/ kb
(5)VM中新生代 幸存代 初生代 年代永久区的最小空间 最大空间 以及当前空间
jstat -gccapacity java_pid | column -t
(6)新生代堆的用量
jstat -gcnew java_pid
(7)年轻代对象的信息及其占用量
jstat -gcnewcapacity <pid>
(8)old代对象的信息
jstat -gcold <pid>
(9)old代对象的信息及其占用量
jstat -gcoldcapacity <pid>
(10)perm类的信息及其占用量
jstat -gcpermcapacity<pid>
(11)当前VM执行编译的信息
jstat -printcompilation <pid>