转载:http://outofmemory.cn/java/jvm/jvm-tools-jps-jstat-jinfo-jmap-jhat-jstack

一、jps(JVM Process Status Tools)

jps是参照Unix系统的取名规则命名的,而他的功能和ps的功能类似,可以列举正在运行的饿虚拟机进程并显示虚拟机执行的主类以及这些进程的唯一ID(LVMID,对应本机来说和PID相同),他的用法如下:

jps [option] [hostid]

其中hostid默认为本机,而option选项包含以下选项

Option Function
-q 只输出LVMID
-m 输出JVM启动时传给主类的方法
-l 输出主类的全名,如果是Jar则输出jar的路径
-v 输出JVM的启动参数

二、jstat(JVM Statistics Monitoring Tools)

jstat主要用于监控虚拟机的各种运行状态信息,如类的装载、内存、垃圾回收、JIT编译器等,在没有GUI的服务器上,这款工具是首选的一款监控工具。其用法如下:

jstat [option vmid [interval [s|ms] [vount] ] ]

参数interval和count分别表示查询间隔和查询次数,如每1毫秒查询一次进程20445的垃圾回收情况,监控20次,命令如下所示:

jstat –gc 20445 1 20

相关的输出参数介绍可参照官方的说明(注:网址链接请点击此处

选项option代表用户需要查询的虚拟机的信息,主要分为3类:类装载、垃圾回收和运行期的编译情况,具体如下表所示:

Option Function
-class 监视类的装载、卸载数量以及类的装载总空间和耗费时间等
-gc 监视Java堆,包含eden、2个survivor区、old区和永久带区域的容量、已用空间、GC时间合计等信息
-gccapcity 监视内容与-gc相同,但输出主要关注Java区域用到的最大和最小空间
-gcutil 监视内容与-gc相同,但输出主要关注已使用空间占总空间的百分比
-gccause 与-gcutil输出信息相同,额外输出导致上次GC产生的原因
-gcnew 监控新生代的GC情况
-gcnewcapacity 与-gcnew监控信息相同,输出主要关注使用到的最大和最小空间
-gcold 监控老生代的GC情况
-gcoldcapacity 与-gcold监控信息相同,输出主要关注使用到的最大和最小空间
-gcpermcapacity 输出永久带用到的最大和最小空间
-compiler 输出JIT编译器编译过的方法、耗时信息
-printcompilation 输出已经被JIT编译的方法

使用 yum whatprovides '*/jstat'查包含jstat命令开发包的名称。

http://www.wujianjun.org/2016/09/22/jvm-tools-jstat/#%E7%AE%80%E4%BB%8B

三、jinfo(JVM configuration Info for Java)

Jinfo的作用是实时查看虚拟机的各项参数信息jps –v可以查看虚拟机在启动时被显式指定的参数信息,但是如果你想知道默认的一些参数信息呢?除了去查询对应的资料以外,jinfo就显得很重要了。jinfo的用法如下:

Jinfo [option] pid

如 jinfo –sysprops {pid}

四、jmap(JVM Memory Map for Java)

jmap用于生成堆快照(heapdump)。当然我们有很多方法可以取到对应的dump信息,如我们通过JVM启动时加入启动参数 –XX:HeapDumpOnOutOfMemoryError参数,可以让JVM在出现内存溢出错误的时候自动生成dump文件,亦可以通过-XX:HeapDumpOnCtrlBreak参数,在运行时使用ctrl+break按键生成dump文件,当然我们也可以使用kill -3 pid的方式去恐吓JVM生成dump文件。jmap的作用不仅仅是为了获取dump文件,还可以用于查询finalize执行队列、Java堆和永久带的详细信息,如空间使用率、垃圾回收器等。其运行格式如下:

jmap [option] vmip

Option的信息如下表所示

Option Function
-dump 生成对应的dump信息,用法为-dump:[live,]format=b,file={fileName}
-finalizerinfo 显示在F-Queue中等待的Finalizer方法的对象(只在linux下生效)
-heap 显示堆的详细信息、垃圾回收器信息、参数配置、分代详情等
-histo 显示堆栈中的对象的统计信息,包含类、实例数量和合计容量
-permstat 以ClassLoder为统计口径显示永久带的内存状态
-F 当虚拟机对-dump无响应时可使用这个选项强制生成dump快照

示例:jmap -dump:format=b,file=heap.dump 20445

五、jhat(JVM Heap Analysis Tool)

jhat是用来分析dump文件的一个微型的HTTP/HTML服务器,它能将生成的dump文件生成在线的HTML文件,让我们可以通过浏览器进行查阅,然而实际中我们很少使用这个工具,因为一般服务器上设置的堆、栈内存都比较大,生成的dump也比较大,直接用jhat容易造成内存溢出,而是我们大部分会将对应的文件拷贝下来,通过其他可视化的工具进行分析。启用法如下:

jhat {dump_file}

执行命令后,我们看到系统开始读取这段dump信息,当系统提示Server is ready的时候,用户可以通过在浏览器键入http://ip:7000进行查询。

六、jstack(JVM Stack Trace for java)

jstack用于JVM当前时刻的线程快照,又称threaddump文件,它是JVM当前每一条线程正在执行的堆栈信息的集合。生成线程快照的主要目的是为了定位线程出现长时间停顿的原因,如线程死锁、死循环、请求外部时长过长导致线程停顿的原因。通过jstack我们就可以知道哪些进程在后台做些什么?在等待什么资源等!其运行格式如下:

jstack [option] vmid

相关的option和function如下表所示

Option Function
-F 当正常输出的请求不响应时强制输出线程堆栈
-l 除堆栈信息外,显示关于锁的附加信息
-m 显示native方法的堆栈信息

示例:jstack -l 20445

JVM监控工具:jps、jstat、jinfo、jmap、jhat、jstack使用介绍的更多相关文章

  1. JVM性能调优监控命令jps、jinfo、jstat、jmap+jhat、jstack使用详解

    JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jinfo.jstat.jmap+jhat.jstack等小巧的工具,本博客希望能起抛砖 ...

  2. jvm系列(四):jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)

    文章同步发布于github博客地址,阅读效果更佳,欢迎品尝 运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole.大名鼎 ...

  3. [转]jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)

    运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole.大名鼎鼎的VisualVM,IBM的Memory Analyzer ...

  4. JVM调优 — 命令大全(jps jstat jmap jhat jstack jinfo)(转)

    运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole.大名鼎鼎的VisualVM,IBM的Memory Analyzer ...

  5. jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)

    现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 运用jv ...

  6. JDK自带监控工具 jps、jinfo、jstat、jmap、jconsole

    分类: JVM 2010-10-04 11:05 587人阅读 评论(0) 收藏 举报 工具jdkjava远程连接unixstring 常用有五个命令行工具: jinfo: 可以输出并修改运行时的ja ...

  7. JVM 监控工具——jps

    [参考文章]:[Linux运维入门]Jstatd方式远程监控Linux下 JVM运行情况 1. jps简介 显示系统内所有的HotSpot虚拟机进程. 且只能查看当前用户下的Java进程信息: 2. ...

  8. (转)JVM调优常用命令(jstat、jmap、jstack)

    原文:https://www.cnblogs.com/ityouknow/p/5714703.html 一.jstat jstat(JVM statistics Monitoring)是用于监视虚拟机 ...

  9. 【Linux】在linux上java工具jps jstat jinfo等命令找不到怎么办

    一.yum安装方式 1)搜索openjdk-devel相关的安装包 yum search java|grep jdk 2)安装对应的版本 yum install -y java-1.8.0-openj ...

  10. JVM监控工具用法指导

    JVM监控工具用法指导 2010-09-27 15:39 dolphin-ygj javaeye.com 字号:T | T 通过JVM监控工具的使用可以及时发现问题,剔除安全隐患,这里向大家描述一下常 ...

随机推荐

  1. Node.js Addons翻译(C/C++扩展)

    PS:请先升级Node 6.2.1,Node 升级命令 npm install -g n;n stable.NOde.js扩展是一个通过C/C++编写的动态链接库,并通过Node.js的函数requi ...

  2. integer to roman leetcode c++实现

    Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...

  3. python爬虫---从零开始(二)Urllib库

    接上文再继续我们的爬虫,这次我们来述说Urllib库 1,什么是Urllib库 Urllib库是python内置的HTTP请求库 urllib.request 请求模块 urllib.error 异常 ...

  4. 错误的语法:"create view必须是批处理中仅有的语句"

    编写脚本提示: 错误的语法:"create view必须是批处理中仅有的语句" FROM sys.views WHERE name = 'v_CS_UserRoleNames' ) ...

  5. ie8不支持伪类选择器的解决方案

    引用jQuery的插件jquery.pseudo.js插件内容: (function($){ var patterns = { text: /^['"]?(.+?)["']?$/, ...

  6. ArrayList集合(JDK1.8)

    简述 List是继承于Collection接口,除了Collection通用的方法以外,扩展了部分只属于List的方法. 常用子类  ?ArrayList介绍 1.数据结构 其底层的数据结构是数组,数 ...

  7. rpm 包管理器

    rpm 包管理器 二进制应用程序的组成部分: 二进制文件.库文件.配置文件.帮助文件 程序包管理器:不同厂商的程序,包管理器也不同. debian:deb文件, dpkg包管理器 redhat: rp ...

  8. Android 图片设置圆角

    Android中经常会遇到对图片进行二次处理,例如加圆角,或者显示圆形图片 方法一: 通过第三方框架Glide实现图片显示有圆角,有三种写法如下: 1.1,第一种实现: RequestOptions ...

  9. 前端基础之CSS_2

    摘要 盒子模型 浮动 清除 溢出 定位 模态框 rgba 与 opacity透明区别  一.CCS盒子模型 margin:标签与标签之间的距离,主要用于控制标签周围间的间隔,从视觉上达到相互分开的目的 ...

  10. CSRF verification failed. Request aborted. 表单提交方法为POST时的报错

    本人所用Django版本为1.11,在设置请求方法为POST时,遇到标题中的错误,尝试了多种方法,最终通过下面的操作来修复: 在template文件中添加图中红框部分 接着,导入csrf_exempt ...