JAVA 工具命令集
jstat
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
参数解释:
Options — 选项,我们一般使用 -gcuti-查看gc情况
vmid — VM的进程号,即当前运行的java进程号
interval– 间隔时间,单位为秒或者毫秒
count — 打印次数,如果缺省则打印无数次
option常见的有
- class (类加载器)
- compiler (JIT)
- gc (GC堆状态)
- gccapacity (各区大小)
- gccause (最近一次GC统计和原因)
- gcnew (新区统计)
- gcnewcapacity (新区大小)
- gcold (老区统计)
- gcoldcapacity (老区大小)
- gcpermcapacity/gcmetacapacity (永久区大小)
- gcuti-(GC统计汇总)
- printcompilation (HotSpot编译统计)
javap
用于反编译Java类文件(.class文件)
javap <options> <classes>
-version Version information
-v -verbose 选项表示显示附加信息,如局部变量表、操作码等
-l 输出行号和本地变量表
-public 显示公共类和成员
-protected 显示受保护的/公共类和成员
-package 显示程序包/受保护的/公共类)
-p -private 显示所有类和成员
-c 对代码进行反汇编
-s 输出内部类型签名
-sysinfo 显示正在处理类的系统信息(路径、大小、日期、MD5)
-constants 查看最终常量
-classpath <path> 指定 javap 命令用来查找用户类文件的路径。它会覆盖默认路径或 CLASSPATH 环境变量(如果已设置)
-cp <path> 指定 javap 命令用来查找用户类文件的路径。它会覆盖默认路径或 CLASSPATH 环境变量(如果已设置)
-bootclasspath <path> 覆盖引导类文件的路径
jhat
用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言。
(需要先导出堆信息,jmap -dump:live,file=a.log pid,再分析堆,jhat -J-Xmx512M a1.log)
jhat [-stack <bool>] [-refs <bool>] [-port <port>] [-baseline <file>] [-debug <int>] [-version] [-h|-help] <file>
-J<flag> Pass <flag> directly to the runtime system. For
example, -J-mx512m to use a maximum heap size of 512MB
-stack false: Turn off tracking object allocation call stack.
-refs false: Turn off tracking of references to objects
-port <port>: Set the port for the HTTP server. Defaults to 7000
-exclude <file>: Specify a file that lists data members that should
be excluded from the reachableFrom query.
-baseline <file>: Specify a baseline object dump. Objects in
both heap dumps with the same ID and same class will
be marked as not being "new".
-debug <int>: Set debug level.
0: No debug output
1: Debug hprof file parsing
2: Debug hprof file parsing, no server
-version Report version number
-h|-help Print this help and exit
<file> The file to read
jmap
用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节
jmap [option] <pid>
(to connect to running process)
jmap [option] <executable <core>
(to connect to a core file)
jmap [option] [server_id@]<remote server IP or hostname>
(to connect to remote debug server)
<option> is one of:
<none> 如果使用不带选项参数的jmap打印共享对象映射,将会打印目标虚拟机中加载的每个共享对象的起始地址、映射大小以及共享对象文件的路径全称。这与Solaris的pmap工具比较相似。
-heap 打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况.
-histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.
-clstats 打印Java堆的类装入器wise统计信息。对于每个类装入器,都会打印它的名称、活动程度、地址、父类装入器以及它装入的类的数量和大小
-finalizerinfo 打印正等候回收的对象的信息.
-dump:<dump-options> 使用hprof二进制形式,输出jvm的heap内容到文件, live子选项是可选的,假如指定live选项,那么只输出活的对象到文件.
-F 强迫.在pid没有响应的时候使用-dump或者-histo参数. 在这个模式下,live子参数无效.
-J<flag> 传递参数给jmap启动的jvm.
jstack
java虚拟机自带的一种堆栈跟踪工具,用于生成java虚拟机当前时刻的线程快照
jstack [-l] <pid>
(to connect to running process)
jstack -F [-m] [-l] <pid>
(to connect to a hung process)
jstack [-m] [-l] <executable> <core>
(to connect to a core file)
jstack [-m] [-l] [server_id@]<remote server IP or hostname>
(to connect to a remote debug server)
Options:
-F to force a thread dump. Use when jstack <pid> does not respond (process is hung)
-m to print both java and native frames (mixed mode)
-l long listing. Prints additional information about locks
jinfo
实时查看Java虚拟机各种配置参数和系统属性
jinfo [option] <pid>
option常见的有
-flag name 显示指定名称对应的配置参数
-flag [+|-]name 启用或禁用指定名称的参数
-flag name=value 不需要重启Java虚拟机,修改指定名称的参数为指定的值
-flags 显示全部的配置参数
-sysprops 以键值对的方式显示当前Java虚拟机的全部的系统属性