您的位置 首页 java

Java性能调优学习(二)-jinfo,jstat,jmap的使用

上一节认识了 JVM 参数和jps命令的使用,这一节来学习下jinfo,jstat,jmap的使用,话不多说,开始。

jinfo

功能描述: jinfo也是jvm中的一个命令,可以查看运行中jvm的全部参数,还可以设置部分参数。

格式:

`jinfo [ option ] pid`
`jinfo [ option ] executable core`
`jinfo [ option ] [server-id@]remote-hostname-or-IP`
 

参数说明:

pid: 对应jvm的进程id
executable core: 产生core dump文件
[server-id@]remote-hostname-or-IP: 远程的ip或者hostname,server-id标记服务的唯一性id
 

option列表:

no option 输出全部的参数和系统属性
-flag name 输出对应名称的参数
-flag [+|-]name 开启或者关闭对应名称的参数
-flag name=value 设定对应名称的参数
-flags 输出全部的参数
-sysprops 输出系统属性
 

实际场景:

有时候我们需要查看指定 Java 进程的全部参数或者指定参数,这个时候我们就可以使用jps+jinfo命令来查看具体Java进程的参数。

例1:查看指定Java进程的全部参数

查看全部参数

例2:查看指定Java进程的最大内存

查看最大内存

jstat

功能描述:jstat也是jvm中的一个命令,jstat可以查看JVM统计信息:类加载,垃圾收集,JIT编译。

格式:

jstat

参数说明:

-t: 可以在打印的列加上Timestamp列,用于显示系统运行的时间
-h: 可以在周期性数据数据的时候,可以在指定输出多少行以后输出一次表头
vmid: Virtual Machine ID( 进程的 pid)
 interval : 执行每次的间隔时间,单位为毫秒
count: 用于指定输出多少次记录,缺省则会一直打印
option: 具体信息的类型
 

option列表:

-class 显示ClassLoad的相关信息;
-compiler 显示JIT编译的相关信息;
-gc 显示和gc相关的堆信息;
-gccapacity    显示各个代的容量以及使用情况;
-gcmetacapacity 显示metaspace的大小
-gcnew 显示新生代信息;
-gcnewcapacity 显示新生代大小和使用情况;
-gcold 显示老年代和永久代的信息;
-gcoldcapacity 显示老年代的大小;
-gcutil   显示垃圾收集信息;
-gccause 显示垃圾回收的相关信息(通-gcutil),同时显示最后一次或当前正在发生的垃圾回收的诱因;
-printcompilation 输出JIT编译的方法信息;
 

实际场景:

有时候我们想要看到指定Java进程的JVM统计信息,这个时候就可以使用jps+jstat来完成。

例1:每隔1秒显示加载class的数量,及所占空间等信息,输出10次

classLoader相关信息

例2:显示gc相关的堆信息,查看gc的次数,及时间

gc相关的堆信息

jstat其他的option选项,感兴趣的小伙伴们自己操作实验把,这边篇幅有限,就不一一举例了。

jmap

功能描述:jmap命令可以获得运行中的jvm的堆的内存快照,从而可以离线分析 堆内存 情况,以检查 内存泄漏 ,检查一些严重影响性能的大对象的创建,检查系统中什么对象最多,各种对象所占内存的大小等等,还可以使用jmap生成HeapDump。

jmap

实例场景:

一般当我们遇到内存溢出的问题时,由于生产上代码和环境比较复杂,我们需要去根据内存映像文件来具体分析。那么如何导出内存映像文件呢?有两种方式,一种是配置参数,一种是jmap。

第一种方式:配置参数,内存溢出自动导出内存映像文件

-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=./
 

第二种方式:jmap手动导出内存映像文件

jmap手动导出

今天讲解了jinfo,jstat,jmap的相关作用和使用,下一节为大家带来jmap+mat内存分析实战。

文章来源:智云一二三科技

文章标题:Java性能调优学习(二)-jinfo,jstat,jmap的使用

文章地址:https://www.zhihuclub.com/197420.shtml

关于作者: 智云科技

热门文章

网站地图