JDK工具包
jps 虚拟机进程状况工具
jps是虚拟机进程状况工具,列出正在运行的虚拟机进程,使用 Windows 的任务管理器或 UNIX 的 ps 命令也可以查询,但如果同时启动多个进程,必须依赖 jps。jps -l 显示类名
jps :列出Java程序进程ID和Main函数名称
jps -q :只输出进程ID
jps -m :输出传递给Java进程(主函数)的参数 jps -l :输出主函数的完整路径
jps -v :显示传递给Java虚拟的参数
jstat:虚拟机统计信息监视工具
监视虚拟机各种运行状态信息,显示本地或远程虚拟机进程中的类加载、内存、垃圾收集、即时编译器等运行时数据。
options:由以下值构成
-class:显示ClassLoader的相关信息
-compiler:显示JIT编译的相关信息
-gc:显示与GC相关信息
-gccapacity:显示各个代的容量和使用情况
-gccause:显示垃圾收集相关信息(同-gcutil),同时显示最后一次或当前正在发生的垃圾收集的诱发原因
-gcnew:显示新生代信息
-gcnewcapacity:显示新生代大小和使用情况
-gcold:显示老年代信息
-gcoldcapacity:显示老年代大小
-gcpermcapacity:显示永久代大小
-gcutil:显示垃圾收集信息
jstat -gc
进程内存区域及GC详细信息
jstat -gc pid 250 -4 (采样间隔250ms 采样数4)
jstat -gcutil pid 1s 5 (间隔1S 5次 百分比显示)
jinfo
jinfo可以用来查看正在运行的Java程序的扩展参数,甚至支持修改运行过程中的部分参数
jmap
jmap用来查看堆内存使用状况,一般结合jhat使用。
生成堆转储文件
jmap -dump:format=b,file=heapdump.hprof pid
Java生成堆转储的方式有多种:
- 使用 jmap -dump 选项可以在JVM运行时获取 dump.
- 使用 jconsole 选项通过 HotSpotDiagnosticMXBean 从运行时获得堆转储。
- 在虚拟机启动时如果指定了
-XX:+HeapDumpOnOutOfMemoryError
选项,则抛出 OutOfMemoryError 时,会自动执行堆转
储。
jstack
jstack是Java虚拟机自带的一种堆栈跟踪工具,用于生成java虚拟机当前时刻的线程快照。
jstack -l 30108 | grep 'java.lang.Thread.State' | wc -l // 统计线程数
jstack pid 76859
第三方工具
https://gceasy.io/ 分析日志在线
Arthas 等
dashboard
当前进程的信息
查看线程thread
通过thread命令来获取到应用进程的线程信息,thread -1会打印线程统计信息
反编译已加载类源码
运行期通过jad来反编译项目代码, 可以用来验证代码是否上线成功。
具体使用,可以查看 https://arthas.aliyun.com/doc/