栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Java jps、jstat、jinfo、jmap、jhat、jstack工具介绍

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java jps、jstat、jinfo、jmap、jhat、jstack工具介绍

文章目录
  • JPS:虚拟机进程状况工具
  • jstat:虚拟机统计信息监视工具
  • jinfo:Java配置信息工具
  • jmap:Java内存映像工具
  • jhat:虚拟机堆转储快照分析工具
  • jstack:Java栈跟踪工具

JPS:虚拟机进程状况工具

可以列出正在运行的虚拟机进程,并显示虚拟机执行的主类名称及进程的本地虚拟机唯一ID(LVMID):

常用命令选项:

-q :只显示LVMID

-m :主类main函数的参数

-l :输出主类的全名,执行的是Jar包则输出JAR路径

-v :输出虚拟机启动时的JVM参数

看看jps -v吧:

可以看到常见的-Xms -Xmx等等

jstat:虚拟机统计信息监视工具

用于监视虚拟机各种运行状态信息的命令行工具

命令格式为:

jstat + 选项 + vmid + 间隔时间(秒/毫秒)+ 次数

VMID说明:如果是本地虚拟机进程,VMID和LVMID是一样的;如果是远程的虚拟机进程,VMID的格式就如下:

http(https): //LVMID ip:端口/服务名 (也不知道翻译对了没 )

 jstat命令的选项主要分为三类:类加载、垃圾收集器、运行期编译状况;以下是主要选项:

选 项作用
-class监视类加载、卸载数量、总空间以及类装载所耗费的时间
-gc监视堆状况,包括Eden、2个Survivor、老年代、永久区代的容量、已用空间、垃圾收集时间合计等信息
-gccapacity与-gc监视内容基本相同,但是主要关注Java各个堆区域使用到的最大、最小空间
-gcutil与-gc监视内容基本相同,但是主要关注已使用空间占总空间的百分比
-gccause与-gcutil功能一样,但是会额外输出导致上一次垃圾收集的原因
-gcnew监视新生代垃圾收集状况
-gcnewcapactiy见名知意,主要关注新生代使用到的最大空间、最小空间
-gcold监视老年代垃圾收集状况
-gcoldcapactiy同理
-gcpermcapactiy主要关注永久代使用到的最大空间、最小空间
-compiler输出即时编译器编译过的方法、耗时信息等
-printcompilaction输出已经被即时编译器编译的方法

酪 下面演示一个 jstat -gcutil:

‍⚖ 解释一下输出的东西:

S0、S1代表的是两个Survivor区(幸存区)已使用空间,

E 代表的是Eden,新生代的Eden区已使用空间,

O 很明显,Old ------老年代已使用空间

M metaspace------元空间,因为我是jdk8,永久代已经被彻底替换为元空间;如果你的JDK版本 是7的某些版本或者低于7,就会看到的是 P Permanent-------永久代

CCS : 压缩类空间区域已使用的空间

YGC :Young GC 即发生了6次新生代的gc

YGCT : Young GC Time 即新生代gc的总耗时为0.062(秒)

FGC: Full GC (整堆收集)

FGCT:Full GC 的总耗时

GTC :所有GC的总耗时

jinfo:Java配置信息工具

实时查看和调整虚拟机各项参数

命令格式:

jinfo + 选项 + LVMID

它的常用选项如图中的option处:

每个option参数上面都说的很清楚了,如不理解,我帮你翻译几个:

-flag :打印出这个name的虚拟机参数

 示例如下:查看3788虚拟机进程是否开启了打印gc日志

可以看到是开启了的(补充基础:虚拟机参数前+代表开启,-代表关闭)

-flag [+|-]:就是动态地修改(开启/关闭)某个虚拟机进程的参数

 示例如下:上面我们查到PrintGC参数式开启的,现在我们把它关了

再将它开启:

也成功的将其修改为开启

-flags :列出某个虚拟机进程的全部参数

jmap:Java内存映像工具

用于生成堆转储快照(一把叫它dump文件、heapdump文件),

也可以使用 -XX:+HeapDumpOnOutOfMemoryError,可以让虚拟机在内存溢出异常后,自动生成堆转储快照文件

命令格式:

jmap +选项 + LVMID

 表格实在不想写了,偷个懒 jmap --help如下

Usage:
    jmap [option] 
        (to connect to running process)
    jmap [option] 
        (to connect to a core file)
    jmap [option] [server_id@]
        (to connect to remote debug server)

where 
jhat:虚拟机堆转储快照分析工具

与jmap配合使用,用来分析jmap生成的dump文件

jhat内置了一个微型的Http/Web服务器,生成堆转储快照分析结果后,可以在浏览器中查看,默认端口7000。几乎不会使用,有很多专门的分析工具

jstack:Java栈跟踪工具

用于生成虚拟机当前时刻的线程快照

命令格式:

jstack + 选项 + LVMID

Usage:
    jstack [-l] 
        (to connect to running process)
    jstack -F [-m] [-l] 
        (to connect to a hung process)
    jstack [-m] [-l]  
        (to connect to a core file)
    jstack [-m] [-l] [server_id@]
        (to connect to a remote debug server)

Options:
    -F  to force a thread dump. Use when jstack  does not respond (process is hung)  (当正常输出的请求不被响应时,强制输出线程栈)
    -m  to print both java and native frames (mixed mode) (显示虚拟机栈和本地方法栈)
    -l  long listing. Prints additional information about locks (除了堆栈,还显示锁的信																	息)
    -h or -help to print this help message

 兄弟们,写这玩意挺累的。可能不是很全面、详细(我相当于是做笔记《深入理解Java虚拟机》这本书很精彩),但也够入门了。如果其中有错误还请指正,欢迎交流学习。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/289046.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号