JDK 命令行工具及可视化工具

JDK 命令行的工具

JPS :虚拟机进程状况工具

-q 只输出 LVMID, 省略主类的名称。
-m 输出虚拟机进程启动时传递给主类 main() 函数的参数。
-l 输出主类的全名, 如果进程执行的是 Jar 包, 输出 Jar 路径。
-v 输出虚拟机进程启动 JVM 参数。

jstat:虚拟机统计信息监视工具

可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT 编译等运行数据。
命令格式 jstat [option vmid [interval[s|ms] [count]]]
如果是远程虚拟机进程 那么 VMID 格式:[protocol:][//]lvmid[@hostname[:port]/servername]
参数 interval 和 count 代表查询间隔和次数, 如果省略了这两个参数, 说明只查询一次。

jinfo:Java 配置信息工具

jinfo 是作用是实时查看和调整虚拟机的各项参数。使用 jps -v 参数可以查看虚拟机启动时显示执行的参数列表。
jinfo -flag PretenureSizeThreshold 7832
-XX:PretenureSizeThreshold=0

jmap:Java 内存映像工具

jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为 heapdump 或 dump 文件)。
-dump 生成 Java 堆转储快照。
-finalizerinfo 显示在 F-Queue 中等待 Finalizer 线程执行 finalize 方法的对象。
-heap 显示 Java 堆详细信息。
-histo 显示堆中对象统计信息。
-permstat 以 ClassLoader 为统计口径显示永久代内存状态。
-F 当虚拟机进程对 - dump 选项没有响应时, 可使用这个选项强制生成 dump 快照。

jhat:虚拟机堆转储快照分析工具

与 jmap 搭配使用, 来分析 jmap 生成的堆 转储快照。

jstack:Java 堆栈跟踪工具

jstack(Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照(一般称为 threaddump 或 javacore 文件)。
-f 当正常输出的请求不被响应时, 强制输出线程堆栈。
-l 除堆栈外, 显示锁的附件信息。
-m 如果调用到本地方法的话, 可以显示 C/C++ 的堆栈。

JDK 的可视化工具

JConsole

JConsole 工具在 JDK/bin 目录下, 启动 JConsole 后, 将自动搜索本机运行的 jvm 进程, 不需要 jps 命令来查询指定。双击其中一个 jvm 进程即可开始监控, 也可使用 “远程进程” 来连接远程服务器。

VisualVM

VisualVM 是一个集成多个 JDK 命令行工具的可视化工具。VisualVM 基于 NetBeans 平台开发, 它具备了插件扩展功能的特性, 通过插件的扩展, 可用于显示虚拟机进程及进程的配置和环境信息 (jps, jinfo), 监视应用程序的 CPU、GC、堆、方法区及线程的信息 (jstat、jstack) 等。VisualVM 在 JDK/bin 目录下。