Java Tools
工具指南
jshell
Java交互式命令
jshell [options] [load-files]
load-files是命令启动时运行的一个或多个脚本文件,可以包含任何有效代码片段或JShell命令。可以是本地文件,或者如下预先定义的脚本:
DEFAULT
Loads the default entries, which are commonly used as imports.
JAVASE
Imports all Java SE packages.
PRINTING
Defines print, println, and printf as jshell methods for use within the tool.
超过一个脚本使用空格分开名字,脚本按照命令行输入顺序执行,命令行脚本将在启动脚本之后运行。在JShell启动之后运行脚本,使用/open
命令。
jcmd
jcmd <pid | main class> <command ...|PerfCounter.print|-f file>
列出本地VM进程(包括pid和main class):
|
|
查看所有可用选项
|
|
获取指定选项帮助
|
|
jdb
jdb [options] [classname] [arguments]
classname代表要调试的main class的名字。arguments是传给main()方法的参数。
jinfo
生成Java指定进程的配置信息。
jinfo [option] pid
如果指定进程在64位JVM上运行,可能需要指定-J-d64
选项。例如:
|
|
jmap
输出指定进程的详细信息。
jmap [options] pid
jps
jps可以列出正在使用的JVM
jps [-q] [-mlvV][hostid]
hostid格式如下
[protocol:][[//]hostname][:port][/servername]
- -q可以禁止输出类名、JAR文件名和main方法参数。只显示本地JVM标识符。
- -m显示传给main方法的参数
- -l显示main类的完整包名或JAR文件的完整路径
- -v显示传给JVM的参数
- -V 与-q相似
例如
|
|
jstack
输出Java指定进程的线程堆栈跟踪信息。
|
|
-l选项可以输出关于锁的额外信息。
jstat
监控JVM统计信息
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
查看所有可用选项:
|
|
vmid是指VM标识符,格式为<lvmid>[@<hostname>[:<port>]]
,其中<lvmid>
是本地虚拟机标识符,一般为进程id,hostname和port指主机名和端口。
Java监控工具
VM基本信息
|
|
线程信息
jconsole可以查看正在运行的线程数量。
|
|
类信息
可以使用jconsole或jstat获取应用程序使用的类数量。jstat也可以获取类的编译信息。
live GC分析
实际上,每个监视工具都会报告有关GC活动的信息。 jconsole显示堆使用情况的实时图表; jcmd允许执行GC操作; jmap可以在永久代上打印堆摘要或信息,也可以创建堆转储; 而jstat产生了很多有关垃圾收集器正在执行的操作的视图。
堆转储后处理
可以从jvisualvm GUI或使用jcmd或jmap从命令行捕获堆转储。 堆转储是堆的快照,可以使用各种工具(包括jvisualvm)对其进行分析。