1、JDK命令行工具
jps命令:
作用:列出正在运行的虚拟机进程。 格式:jps [option] [hostid] 选项: -q 只输出LVMID(Local Virtual Machine Identifier)省略主类的名称 -m 输出虚拟机进程启动时传递给主类的main()函数的参数 -l 输出主类全名,如果进程执行的时Jar包,输出Jar路径 -v 输出虚拟机进程启动的jvm参数
jstat命令:
虚拟机统计堆信息监视工具。 作用:它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。 格式:jstat [ option vmid [interval [s|ms] [count]] ] 选项option代表用户希望查询虚拟机的内容,主要分为类装载、垃圾收集、运行期编译状况3类 选项: -class 监视类装载,卸载数量,总空间以及类装载所耗费的时间。 -gc 监视Java堆状况,包括Eden区,两个survivor区,老年代,永久代等容量,已用空间,GC时间合计等信息。
jinfo命令:
Java配置信息工具 作用:实时地查看和调整虚拟机各项参数,包括未被显示指定的参数的默认值,并且加入了运行期间修改参数的能力 格式:jinfo [option] pid
jmap命令:
Java内存映像工具 作用:用于生成堆转储快照(一般称为heapdump或者dump文件),它还可以查询finalize执行队列,Java堆和永久代的详细信息,如空间使用率、当前用的是哪种收集器等 格式:jmap [ option ] vmid 选项:-dump 生成Java堆转储快照 -finalizerinfo 显示出F-Queue中等待Finalizer线程执行finalize方法的对象,只在Linux、Solaris平台有效 -heap 显示堆统计信息,只在Linux、Solaris平台有效 -histo 显示堆中对象统计信息,包括类、实例数量、合计容量 -F 当虚拟机进程对dump选项没有响应时,可使用这个选项强制生成dump快照,只在Linux、Solaris平台有效
jstack命令:
作用:Java堆栈跟踪工具,用于生成虚拟机当前线程快照,线程快照就是当前虚拟机每一条线程正在执行的方法堆栈的集合,可以通过jstack来查看各个线程调用堆栈,就可以定位到线程在后台干什么。 格式:jstack [ option ] vmid 选项: -F 当正常输出的请求不被响应时,强制输出线程堆栈 -l 除了堆栈外,显示关于锁的附加信息 -m 如果调用到本地方法的话,可以显示C/C++的堆栈
2、JDK可视化工具
JConsole 作用:Java监视与管理工具 内存页签相当于可视化的jstat命令,而线程页签相当于可视化的jstack命令,遇到线程停顿时可以使用这个页签进行分析