| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 020 JVM性能监控与故障处理工具(命令行工具) -> 正文阅读 |
|
[大数据]020 JVM性能监控与故障处理工具(命令行工具) |
学软件技术,读第一手资料,去官方网站:Java SE Specifications 给一个系统定位的问题,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。这里说的数据包括:运行日志、异常堆栈、GC日志、线程快照(threaddump/javacore文件)、堆转储快照(heapdump/hprof文件)等。合理运用虚拟机监控和分析工具可以加快我们分析数据,定位解决问题。 1、jps(功能单一,使用频率最高)jps(JVM Process Status Tool),查正在运行的虚拟机进程,并显示虚拟机主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一ID(Local Virtual Machine Identifier,LVMID)。对于其他的JDK工具大多需要输入它查询到的LVMID来确定要监控的是哪一个虚拟机进程。 jps命令格式:
??2、jstat(在没有GUI图形界面时,它是运行期定位虚拟机性能问题的首选工具)jstat(JVM Statistics Monitoring Tool)是查询虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形界面时,它是运行期定位虚拟机性能问题的首选工具。 命令格式: jstat [option LVMID [interval[s|ms] [count] ] ] 参数interval和count代表查询间隔和次数,如果省略这两个参数,说明只查询一次。假设需要每2000毫秒查询一次进程1080垃圾收集状况,一共查询10次,那命令就是: jstat -gc 1080 2000 10 S0C:第一个幸存区的大小 选项option代表着用户希望查询的虚拟机信息,主要分为3类:类装载、垃圾收集、运行期编译状况,具体选项和作用如下: ?3、jinfo(实时地查看和调整虚拟机各项参数)jinfo(Configuration Info for Java)的作用是实时地查看和调整虚拟机各项参数。 命令格式: jinfo [option] <pid> options参数解释:
最常用示例: 其中11666为pid 查看JVM参数和系统配置
查看打印GC日志参数
打开GC日志参数
关闭GC日志参数
还可以使用下面的命令查看那些参数可以使用jinfo命令来管理:
常用JVM参数:
4、jmap(堆转储快照,dump、Java堆、永久代信息等)jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为dump文件或者heapdump)。 除了可以获取dump文件,它还可以查询finalize执行队列、Java堆和永久代的信息,如空间利用率、当前使用的哪种收集器等。 ? 命令格式: jmap [option] <pid> (连接正在执行的进程) option参数解释:
dump-options: live 只转储存活的对象,如果没有指定则转储所有对象 format=b 二进制格式 file=<file> 转储文件到 <file>
?常用示例:
输出:
这个命令是要把java堆中的存活对象信息转储到dump.hprof文件
输出:
输出结果的含义为当前没有在等待执行finalizer方法的对象
输出堆的详细信息 输出: Attaching to process ID 11666, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.25-b02 using thread-local object allocation. Parallel GC with 4 thread(s) Heap Configuration: //堆内存初始化配置 MinHeapFreeRatio = 0 //对应jvm启动参数-XX:MinHeapFreeRatio设置JVM堆最小空闲比率(default 40) MaxHeapFreeRatio = 100 //对应jvm启动参数 -XX:MaxHeapFreeRatio设置JVM堆最大空闲比率(default 70) MaxHeapSize = 1073741824 (1024.0MB) //对应jvm启动参数-XX:MaxHeapSize=设置JVM堆的最大大小 NewSize = 22020096 (21.0MB) //对应jvm启动参数-XX:NewSize=设置JVM堆的新生代的默认大小 MaxNewSize = 357564416 (341.0MB) //对应jvm启动参数-XX:MaxNewSize=设置JVM堆的新生代的最大大小 OldSize = 45088768 (43.0MB) //对应jvm启动参数-XX:OldSize=<value>:设置JVM堆的老年代的大小 NewRatio = 2 //对应jvm启动参数-XX:NewRatio=:新生代和老生代的大小比率 SurvivorRatio = 8 //对应jvm启动参数-XX:SurvivorRatio=设置新生代中Eden区与Survivor区的大小比值 MetaspaceSize = 21807104 (20.796875MB) // 元数据区大小 CompressedClassSpaceSize = 1073741824 (1024.0MB) //类压缩空间大小 MaxMetaspaceSize = 17592186044415 MB //元数据区最大大小 G1HeapRegionSize = 0 (0.0MB) //G1垃圾收集器每个Region大小 Heap Usage: //堆内存使用情况 PS Young Generation Eden Space: //Eden区内存分布 capacity = 17825792 (17.0MB) //Eden区总容量 used = 12704088 (12.115562438964844MB) //Eden区已使用 free = 5121704 (4.884437561035156MB) //Eden区剩余容量 71.26801434685203% used //Eden区使用比率 From Space: //其中一个Survivor区的内存分布 capacity = 2097152 (2.0MB) used = 1703936 (1.625MB) free = 393216 (0.375MB) 81.25% used To Space: //另一个Survivor区的内存分布 capacity = 2097152 (2.0MB) used = 0 (0.0MB) free = 2097152 (2.0MB) 0.0% used PS Old Generation capacity = 52428800 (50.0MB) //老年代容量 used = 28325712 (27.013504028320312MB) //老年代已使用 free = 24103088 (22.986495971679688MB) //老年代空闲 54.027008056640625% used //老年代使用比率 15884 interned Strings occupying 2075304 bytes. ? ?5、jhat(看dump文件的工具)jhat(JVM Heap Analysis Tool)命令与jmap搭配使用,来分析jmap生成的堆转储快照(dump文件)。一般很少用这个工具 , 因为太简陋。 6、jstack(Java堆栈跟踪工具)jstack(Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件)。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待都是导致线程长时间停顿的常见原因。线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做了什么事情,或者等待着什么资源。 jstack 命令格式: jstack [option] vmid ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 11:10:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |