JDK 包含工具
- jps 命令
- 查看java 进程
- -q 参数可以只输出进程ID
- -m 输出传递给进程参数
- -l 查看主函数的完整路径
- -v 显示传递个JVM的参数
jstat
jstat -option [-t] [-h lines ] vmid [ interval [ count]]
- 查看虚拟机运行状态
- option
- -class 查看ClassLoader相关信息
- -compile 显示JIT信息
- -gc 显示与GC相关堆信息
- -gccapacity 显示各个代的容量及使用情况
- -gccause 显示垃圾收集相关信息
- -gcnew 显示新生代信息
- -gcnewcapacity 显示新生代大小与使用情况
- -gcold 显示老年代和永生代信息
- -t 显示程序运行时间
- interval 统计数据周期,毫秒为单位
- count 指定输出次数
jinfo
jinfo -option pid
- 查看虚拟机参数
- option
- -flag name 指定JVM的参数
- -flag [+|-] name 设定JVM参数的boolean值
- -flag name=value 设定JVM参数值
- java app 并不会指定所有启动参数,不同的JVM之间存在略微的差异,可以通过命令进行简单的查看
- jmap
- 生成java程序的堆dump文件
- 查看堆内对象实例个数「jmap -histo pid」
- 生成堆快照,通过其他工具对堆快照进行分析
「jmap -dump:format=b,file=.\heap.bin pid」 - 查看ClassLoader信息「jmap -permstat pid」
- 查看finalizer队列中的对象
- jhat
- 堆分析工具
- 「jhat .\heap.bin」通过「localhost:7000」访问
- jstack
- 查看线程堆栈,「jstack -l pid」
- jstatd
- 远程主机信息收集
- jcmd
- 多功能命令行,JDK1.7以后
- -l 查看当前系统所有的JVM
- jcmd pid arg
- VM.uptime 查看虚拟机启动时间(pid也可以使用主类全路径来代替)
- Thread.print 打印线程栈信息
- GC.heap_dump ./heap.bin 导出堆栈信息
- VM.system_properties 获取系统属性
- VM.flags 获取启动参数
- PerfCounter 获取性能相关数据
- hprof
- 性能统计工具,用于监测java app 运行时CPU和堆信息
- 可以精确到函数对cpu的占有时间(「hprof -agentlib:hprof=cpu=times,interval=5」)
- 保存对快照信息(「agentlib:hprof=heap=dump,format=b,file=./heap.hprof」),使用mat或者Visual VM进行分析
- 「agentlib:hprof=heap=sites」可以输出每个跟踪点上类所占的内存百分比
图形化监控工具
JConsole
Visual VM
- 远程应用程序必须打开JMX连接
-Djava.rmi.server.hostname=123.56..
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=1234
-Dcom.sun.management.jmxremote.ssl=false
BTrace
- 可以在不停机的状态下,通过字节码注入动态监控系统运行状况
- 通过BTrace脚本(java代码)注入形式
- 功能
- 监控指定函数耗时
- 监控函数参数
- 取得任意代码行信息
- 定时触发
- 获取类属性
- 获取函数调用
JRockit
- 位置:%JAVA_HOME%\bin\jmc.exe
MBean服务器
- java 堆使用率
- CPU使用率
- 线程监控
Flight Recorder(飞行记录器)
- 记录程序在一段时间运行情况,将记录结果进行分析展示
对于要监测程序,JVM启动参数增加(默认采集1min的数据)
-XX:+UnlockCommercialFeatures
-XX:+FlightRecorder分析内容(从以下几个方面)
- 一般信息(堆,CPU,GC使用)
- 内存(垃圾回收,GC时间,GC配置)
- 代码(方法,调用树)
- 线程(线程的调用,等待)
- IO(文件的IO,套接字IO)
- 系统(进程跟踪,环境变量)
- 事件

209

被折叠的 条评论
为什么被折叠?



