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
