JDK内置命令工具

  1. javap
  2. jps
  3. jstat
  4. jcmd
  5. jinfo
  6. jhat
  7. jmap
  8. jstack

1 javap

java反编译工具,主要用于根据java字节码文件反编译为java源代码文件
javap <options> <classes>

选项描述
javap -help
javap -version版本信息
javap -v -verbose输出附加信息
javap -l
javap -public仅显示公共类和成员
javap -protected显示受保护的公共类和成员
javap -package显示程序包/受保护的/公共类和成员
javap -p -private显示所有类和成员
javap -c对代码进行反编译
javap -sysInfo显示正在处理的类的系统信息
javap -constants显示静态最终常量
javap -classpath <path>
javap -bootclasspath <path>覆盖引导类文件的位置

2 jps

jps(java virtual machine process status tool)显示当前所有java进程pid的命令
jps [options] [hostid]

选项描述
jps -q仅输出VM标识符,不包括classname,jar,name,arguments in main method
jps -m输出main method的参数
jps -l输出完全的包名,应用主类名,jar的完全路径名
jps -v输出jvm参数
jpv -V输出通过flag文件传递到JVM中的参数
jps -Joption传递参数到vm,例如:J-Xms512m

3 jstat

jstat监视java虚拟机统计信息
jstat [ generalOption | outputOptions vmid [ interval [ s | ms ] [ count ]]

选项描述
jstat -gc pid显示gc的信息,查看gc的次数及时间
jstat -gccapacity pid内存GC分区中各对象的使用和占用大小
jstat -gcutil pid统计gc信息统计
jstat -gcnew pid年轻代对象的信息
jstat -gcnewcapacity pid年轻代对象的信息及其占用量
jstat -gcold pid oldold代对象的信息
jstat -gcoldcapacity pid oldold代对象的信息及其占用量
jstat -gcpermcapacity pid perm对象的信息及其占用量
jstat -class pid显示加载class的数量,及所占用空间等信息
jstat -compiler pid显示VM实时编译的数量等信息
jstat -printcompilation pid当前VM执行的信息
-t可以在输出信息前面加上一个Timestamp列,显示程序运行的时间
-h可以在周期性的数据输出时,输出多少行数据后
interval指定输出统计周期,count指定输出多少次数据

4 jcmd

jcmd工具,可以替代jps工具查看本地的jvm信息
jcmd -l
jcmd <pid | main class> <command …|PerfCounter.print|-f file>

选项描述
jcmd查看本地的java进程列表,获取其pid
jcmd pid help查看其支持的命令列表
jcmd pid Thread,print -l打印线程栈
jcmd pid VM.command_line打印启动命令及参数
jcmd pid GC.heap_dump /data/filename.dump查看JVM的Heap Dump
jcmd pid GC.class_histogram查看类的统计信息
jcmd pid VM.system_properties查看系统属性内容
jcmd pid VM.uptime查看虚拟机启动时间
jcmd pid PerfCounter.print查看性能统计

5 jinfo

jinfo可以查看运行中jvm的全部参数,还可以设置部分参数
jinfo [option] pid
jinfo [option] executable core
jinfo [option] [server-id@]remote-hostname-or-IP

选项描述
pid对应jvm的进程id
executable core产生core dump文件
[server-id@]remote-hostname-or-IP远程ip或者hostname, server-id标记服务的唯一性id
no option输出全部的参数和系统属性
-flag name输出对应名称的参数
-flag [+|-]name开启或者关闭对应名称的参数
-flag name=value设定对应名称的参数
-flags输出全部的参数
-sysprops输出系统属性

6 jhat

分析java堆的命令,可以将堆中的对象以html的形式显示出来,支持对象查询语言OQL
jhat [-stack <bool>] [-refs <bool>] [-port <port>] [-baseline <file>][-debug <int>] [-version] [-h|help] <file>

选项描述
-J启动JVM时传入启动参数
-stack false|true关闭对象分配调用栈跟踪。默认值为true
-refs false|true关闭对象引用跟踪。默认值为true
-port设置jhat HTTP server的端口号;默认值7000
-exclude指定文件对象查询时需要排除的数据成员列表
-baseline指定一个基准堆转储
-debug int设置debug级别。
-version启动后只显示版本信息就退出

7 jmap

打印出java进程内存中Object的情况,或者将VM中的堆,以二进制输出成文本。
jmap [option] pid
jmap [option] executable core
jmap [option] [server-id@]remote-hostname-or-IP

选项描述
无参,会打印目标JVM加载的每个共享对象的起始地址、映射大小以及共享对象文件的路径
-dump:[live,]format=b,file=<filename>使用hprof二进制输出heap内容到文件,live代表只输出存活对象
-finalizerinfo打印正等待回收的对象的信息
-heap打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况
-histo[:live]打印每个class内存信息,VM的内部类会加上前缀"*",live代表只输出存活对象
-clstats打印classloader和jvm heap方法区的信息
-F强迫,在pid没有响应的时候使用-dump或者-histo参数;在这个模式下,live子参数无效
-hhelp
-J传递参数给jmap启动的jvm

8 jstack

堆栈跟踪工具。jstack用于打印出给定的java进程ID或core file或远程调试服务的java堆栈信息,如果是在64位机器上,需要指定选项“-J-d64”
jstack [option] pid
jstack [option] executable core
jstack [option] [server-id@]remote-hostname-or-IP

选项描述
core打印信息的core dump文件
remote-host-or-IP远程debug服务的主机名或ip
server-id唯一id,例如一台主机上多个远程debug服务
-F强制打印栈信息
-l长列表;打印关于锁的附加信息
-m打印java和native c/c++框架的所有栈信息
-h-help

参考文章

网易云课堂《Java高级开发工程师》

结语

本人所有博客仅用于学习记录,不做任何商业用途,如涉及侵权,还请联系删除,感谢阅读,欢迎留言,一起进步~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值