jvm 命令(jps,jinfo,jmap,jhat,jstack,jstat等)总结

    xiaoxiao2022-07-06  200

    java jvm 基本命令 docker 旗下查看Java jvm运行信息 1、docker ps  查看服务器上有哪些docker容器 2、docker exec -it 容器ID bash  进入容器ID这个容器中 3、使用 Java jvm 命令 du -sh ./first  查看某文件的大小

    Java dump  Java虚拟机的运行快照,讲Java虚拟机运行时的状态和信息保存到文件,主要用于多线程、内存泄漏 线程dump : 包含所有线程的运行状态,纯文本格式 堆dump : 包含线程dump,并包含有堆对象的状态,二进制格式

    -XX:+HeapDumpOnOutOfMemoryError  配置后可在虚拟机发生内存不足错误时,自动生成堆dump

    1、jps :查看当前有哪些Java进程处于运行状态,eg jps -v 查看进程的jvm蚕食情况 2、jstack :jstack 用于生成Java虚拟机当前时刻的线程快照,用来分析线程问题。    线程快照是当前jvm内每一条线程正在执行的方法堆栈的集合、快照目的定位线程出现长时间停顿的原因,比如线程    死锁,死循环等。    其中线程的集中状态:new (未启动) runnable (执行) blocked (受阻塞并等待监视器锁) wating (无线等待) timed_wating (有时限的等待)    terminated (已退出)

    3、jmap      Java内存常见错误       outOfMemoryError 老年代内存不足       outOfMemoryError:PermGen Space 永久代内存不足       outOfMemoryError:Gc overhead limit exceed 垃圾回收时间占用系统运行时间的98%或以上

        jmap -heap pid 查看进程ID的堆配置及使用情况     jmap -histo pid 查看进程ID堆内存中的对象数量及大小     jmap -dump:format=b,file=文件名称 pid  将堆内存使用的详细情况输出到文件中

    4、jstat 监控虚拟机运行状态 常用-gcutil  gc

       eg: jstat -gcutil pid  多久时间毫秒监控一次  打印多少次        jstat -gcutil pid 1000 100  监控虚拟机内存gc情况 每间隔1秒 打印100次

    5、jhat 用来分析Java 堆dump信息    使用 jhat dump文件 会生成一个web服务端口7000 主要查看里面的两项 平台外的所有对象及以树状图形式展示堆情况

    6、jinfo      jinfo pid 查看进程pid 运行环境的配置信息

    7、javap 对代码反编译,也可以查看编译器生成的字节码

    8、jvm 命令总结:   jps 显示当前用户的Java运行的进程   jinfo 实时查看jvm的状态信息   jstat 监控jvm堆运行状态        常用有 jstat -gccause 额外输出上次GC原因               jstat -class 类装载、总空间及消耗空间             jstat -gcutil pid 1000 100   jmap 生成堆快照dump         常用有:jmap -heap pid 查看堆使用情况             jmap -histo pid 堆内存对象数量及大小             jmap -dump:format=b,file=dump文件名称 pid   jhat 解析、分析dump文件信息   jstack 生成当前pid中线程的快照       常用有:jstack pid  查看线程情况   常见问题定位   1、频繁GC 或者内存溢出    使用jps查看进程ID,监控堆gc情况,上次gc原因,生成堆转存文件dump 使用jhat分析 结合代码   2、死锁问题    使用jps查看线程ID 分析线程dump

    最新回复(0)