JDK 常用工具

    技术2025-03-03  7

    jps 查看所有进程

    类似于 linux 的 ps,查看所有 Java 进程的启动类、传入参数、Java 虚拟机参数等信息jps 显示虚拟机执行的主类名和其的唯一 IDjps -q 只输出 IDjps -l 输出主类的全名,如果进程执行的是 jar 包就输出 jar 包的路径jps -v 输出虚拟机进程启动时的 JVM 参数jps -m 输出传递给 Java 进程 main() 函数的参数

    jstat 监视虚拟机各种运行状态信息

    用于监视虚拟机各种运行状态信息,可以显示本地或远程(支持 RMI)虚拟机进程中的类信息、内存、垃圾收集、JIT 编译等运行数据jstat -class vmid 显示 ClassLoader 相关信息jstat -compiler vmid 显示 JIT 编译的相关信息jstat -gc vmid 显示 GC 相关的堆信息jstat -gccapacity vmid 显示各个代的容量以及使用情况jstat -gcnew vmid 显示新生代信息jstat -gcold vmid 显示老年代信息jstat -gcnewcapacity vmid 显示新生代大小以及使用情况jstat -gcoldcapacity vmid 显示老年代大小以及使用情况jstat -gcutil vmid 显示垃圾收集信息可以加上其他参数实现不同效果:jstat -gc -h3 11594 1000 10 标识分析 id 为 11594 的进程的 gc 情况,每 1000ms 打印一次记录,打印 10 次停止,每 3 行后再打印一次标题

    jinfo

    实时的查看和调整虚拟机的参数jinfo vmid 查看该进程的全部参数和系统参数jinfo -flag name vmid 输出对应的参数的具体值jinfo -flag [+|-]name vmid 开启或关闭对应的参数

    jmap

    生成堆快照,获取 dump 文件获取 dump 文件的方法有很多,比如设置参数 -XX:+HeapDumpOnOutOfMemoryError,或者在 linux 下的 kill -3 pid还有其它的功能,比如查询 finalizer 队列,Java 堆和永久代的详细信息,比如空间使用率、当前使用的是那种垃圾收集器等生成的文件需要借助 jhat,jvisualvm 等工具来分析

    jhat

    分析 dump 文件,会建立一个 HTTP 服务器,可以在浏览器上查看分析结果地址是 http://localhost:7000

    jstack

    生成虚拟机当前的线程快照,就是当前虚拟机内的每一条线程正在执行的方法堆栈的集合主要用来定位线程的长时间停顿、死循环、请求等待时间长等问题

    jconsole

    可视化工具可以看当前内存的详细信息,加上参数可以查看远端的 Java 程序,也可以直接在程序里手动连接远端 -Djava.rmi.server.hostname=外网访问 ip 地址 -Dcom.sun.management.jmxremote.port=60001 //监控的端口号 -Dcom.sun.management.jmxremote.authenticate=false //关闭认证 -Dcom.sun.management.jmxremote.ssl=false 还可以做线程监控,有检测死锁等功能

    jvisualvm

    功能更强大的可视化工具具备几乎其他工具的所有功能还可以装插件实现更多功能
    Processed: 0.009, SQL: 9