谢谢《32个java面试必考点》王雷老师 新浪微博资深技术专家 ,大家多多支持
jps 用来查看 Java 进程的信息,包括进程 id、主类名称、主类全路径等。
jmap 可以查看JVM中对象的统计信息,包括内存占用、实例个数、对象类型等等,jmap 可以把堆 dump 下来配合内存分析工具 MAT 进行分析。
jstat 对 JVM 的资源和性能进行实时监控,统计项主要包括:类加载情况、内存容量及使用量、 GC 次数和时间等等。
jstack 可以查看 JVM 线程栈的信息,包括:线程名称、序号、优先级 prio、线程状态、锁状态等。
jinfo 可以查看运行中 JVM 的全部参数,还可以设置部分参数。
jcmd 是 JDK1.7 后提供的工具,可以向 JVM 发送诊断命令。它的功能非常强大,基本上包括了 jmap、jstack、jstat 的功能。可以重点了解这个工具。
其他还有 jconsole、JProfiler、jvisualVM 等,功能跟 JMC 基本重合,建议直接使用 JMC 即可。
当你排查线上问题,需要查看 GC 日志,发现没有打印 GC 的详细信息,可以通过 jinfo 开启 JVM 参数 PrintGCDetails 来动态生效。
当你分析内存泄露风险时,可以通过 jmap 或 jcmd 定期获取堆对象的统计信息,来发现持续增长的可疑对象。
当你遇到某一时刻所有服务都出现耗时较高的问题,可以通过 jstat 来观察 GC 回收状况,看看 GC 停顿耗时是否过高。
当你遇到 JVM 中某一个服务卡死或者停止处理时,可以通过 jstack 查看线程栈,看是否有多个线程处于 BLOCKED 状态产生了死锁。
当你的服务上线后发现性能达不到预期,可以使用 JMC 来分析 JVM 运行信息,看看有哪些热点方法可以优化,哪些线程争用可以避免。
vmstat获取有关进程、内存页面交换、虚拟内存、线程上下文切换、等待队列等信息
反映系统负载情况、查看进程等待数量、内存换页情况、系统上下文切换是否频繁
iostat监视系统磁盘活动,显示CPU使用情况,排查与文件读写有关问题,排查文件写入耗时较高时、查看await和util是否过高
ifstat实时网络流量监控工具,查看系统网络出口、入口使用情况,监控网卡实时流量、反向解析ip、显示端口信息等
netsat监控系统网络状态的工具,查看网络连接状态、监听那些接口、链接相关的进程等信息,显示ip、tcp、udp、icmp协议相关的统计数据
dstat全能实时系统信息统计工具,能够统计CPU、内存占用,网络状况、系统负载、进程信息、磁盘信息等
strace诊断、调试程序运行时系统调用工具,可动态跟踪程序的运行、清楚看到程序运行时产生的系统调用过程及使用的参数、返回值和执行耗时
GDB命令行调试工具,可让程序在受控环境中运行,在指定断点停住、动态改变程序执行环境
lsof列出当前系统打开文件的工具,linux一切皆文件,查看文件列表对系统监测及排错
tcpdump强大的网络抓包工具,分析服务器间调用非常有用,抓取网络传送的数据包进行分析,支持对网络层、协议、主机、网络或端口的过滤,提供and 、or 、not
traceroute网络路由分析工具,利用ICMP定位本地计算机与目标计算机间all路由
重点:
死锁用线程分析工具jstack、内存溢出使用jmap查看堆中占用最大的对象类型
程序性能分析使用JMC飞行记录器
https://blog.csdn.net/dnc8371/article/details/106703764?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param