JDK自带工具jps,jstat,jmap,jconsole使用[通俗易懂]

JDK自带工具jps,jstat,jmap,jconsole使用

大家好,又见面了,我是全栈君。

jps

与ps命令类似:

ps -ef|grep java

用来显示本地的java进程,查看本地执行着几个java应用,并显示进程号。

[root@SE43 ~]# jps   //仅仅显示进程号
23813 Jps
710 Bootstrap
792 Bootstrap

 

[root@SE43 ~]# jps -v    //显示jvm參数
23852 Jps -Denv.class.path=.:/usr/jdk1.6.0_21/lib/dt.jar:/usr/jdk1.6.0_21/lib/tools.jar -Dapplication.home=/usr/jdk1.6.0_21 -Xms8m
710 Bootstrap -Xms2048m -Xmx2048m -XX:NewRatio=2 -XX:PermSize=256M -XX:MaxPermSize=512M -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/root/zhusj/apache-tomcat-6.0.18_1/conf/logging.properties -Dcom.sun.management.jmxremote.port=8119 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.endorsed.dirs=/root/zhusj/apache-tomcat-6.0.18_1/endorsed -Dcatalina.base=/root/zhusj/apache-tomcat-6.0.18_1 -Dcatalina.home=/root/zhusj/apache-tomcat-6.0.18_1 -Djava.io.tmpdir=/root/zhusj/apache-tomcat-6.0.18_1/temp

 

jstat

非常强大的监视jvm内存工具。可用来查看堆内各个部分的使用量,以及载入类的数量。使用时,需指定java进程号。一般使用 -gcutil 查看gc情况。

[root@SE43 ~]# jstat -class 710   //显示载入class的数量,及所占空间等信息
Loaded  Bytes  Unloaded  Bytes     Time   
11242 24450.0       41    65.8      30.25

 

jstat -compiler pid:显示VM实时编译的数量等信息。
jstat -gc pid:能够显示gc的信息。查看gc的次数及时间。当中最后五项,各自是young gc的次数,young gc的时间,full gc的次数,full gc的时间。gc的总时间。

jstat -gccapacity pid:能够显示VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量。PGCMX显示的是perm的内存最大使用量。PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。

S0  — Heap上的 Survivor space 0 区已使用空间的百分比
S1  — Heap上的 Survivor space 1 区已使用空间的百分比
E   — Heap上的 Eden space 区已使用空间的百分比
O   — Heap上的 Old space 区已使用空间的百分比
P   — Perm space 区已使用空间的百分比
YGC — 从应用程序启动到採样时发生 Young GC 的次数
YGCT– 从应用程序启动到採样时 Young GC 所用的时间(单位秒)
FGC — 从应用程序启动到採样时发生 Full GC 的次数
FGCT– 从应用程序启动到採样时 Full GC 所用的时间(单位秒)
GCT — 从应用程序启动到採样时用于垃圾回收的总时间(单位秒)

 

jstat -compiler pid:显示VM实时编译的数量等信息。

jstat -gc pid:能够显示gc的信息,查看gc的次数及时间。

当中最后五项,各自是young gc的次数。young gc的时间。full gc的次数,full gc的时间。gc的总时间。
jstat -gccapacity pid:能够显示VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量。PGCMX显示的是perm的内存最大使用量。PGC是当前新生成的perm内存占用量。PC是但前perm内存占用量。

S0  — Heap上的 Survivor space 0 区已使用空间的百分比
S1  — Heap上的 Survivor space 1 区已使用空间的百分比
E   — Heap上的 Eden space 区已使用空间的百分比
O   — Heap上的 Old space 区已使用空间的百分比
P   — Perm space 区已使用空间的百分比
YGC — 从应用程序启动到採样时发生 Young GC 的次数
YGCT– 从应用程序启动到採样时 Young GC 所用的时间(单位秒)
FGC — 从应用程序启动到採样时发生 Full GC 的次数
FGCT– 从应用程序启动到採样时 Full GC 所用的时间(单位秒)
GCT — 从应用程序启动到採样时用于垃圾回收的总时间(单位秒)

[root@SE43 ~]# jstat -gcutil 710    //gc的统计信息
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT 
  0.00  15.69  80.03  38.70  33.30    123   21.421     1    0.817   22.238
[root@B1943 ~]#jstat -gcutil 710 1000 5    //每1000毫秒打印一次,共5次

jmap

能够输出某个java进程内存内对象的情况,甚至能够将VM 中的heap,以二进制输出成文本。

[root@B1943 ~]# jmap -histo 710 >mem.txt    //可使用文本对照工具对照出GC回收了哪些对象
该文件里内容如:
num #instances #bytes class name
<pre class="plain" name="code">----------------------------------------------
4:  1202692  67350752 java.io.ObjectStreamClass$WeakClassKey

[root@B1943 ~]#jmap -dump:format=b,file=mem.bin 710    //将该进程heap输出到mem.bin文件里,使用二进制形式。该文件可供其它分析工具使用,如eclipse memory analyser
//注:jmap使用的时候jvm是处在假死状态的。仅仅能在服务瘫痪的时候为了解决这个问题来使用。否则会造成服务中断

 jconsole、jvisualvm

http://jiajun.iteye.com/blog/810150

    个人觉得 jvisualvm就是jconsole的升级版。

能够监视、观察java程序的情况。

    也能够监视tomcat,这里记录下监视tomcat的方法。

     监视tomcat须要改动bin/catalina.sh文件:在 Execute The Requested Command前面加上例如以下配置

CATALINA_OPTS="-Dcom.sun.management.jmxremote.port=8799
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false"

重新启动tomcat后就能够被jvisualvm监视了。

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115875.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CEGUI0.8.4例子

    CEGUI0.8.4例子#defineGLUT_DISABLE_ATEXIT_HACK#pragmacomment(lib,”glew32.lib”)#include<stdlib.h>#include<gl/glew.h>#include<gl/glut.h>#include<CEGUI/CEGUI.h>#include<CEGUI/RendererM…

    2022年7月23日
    10
  • Jsonpath语法

    Jsonpath语法JsonPath用法示例操作符符号描述$查询的根节点对象,用于表示一个json数据,可以是数组或对象@过滤器(filterpredicate)处理的当前节点对象*获取所有节点.获取子节点…递归搜索,筛选所有符合条件的节点?()过滤器表达式,筛选操作[start:end]数组片段,区间为[start,end),不包含en…

    2025年7月25日
    5
  • endnote x9中文版安装教程(vivox9安装未知应用权限在哪)

    endnote x9中文版安装教程(vivox9安装未知应用权限在哪)一、下载在百度中搜索“Endnotex9”,点第一个链接进入下载页面。软件大小为108MB,下载的是一个压缩包,如下图所示,双击解压之后是右侧的图标,解压到文件夹,双击即可安装。二、安装直接安装即可,可以更换安装路径备注:安装成功后使用汉化版,可以将CHS文件夹里的[EndNote.exe]拷贝到EndNote的安装目录下。使用英文版,可以将ENG文件夹里的[EndNote.exe]拷贝到EndNote的安装目录下。不论用的是英文版还是中文版,替换之后即可使用…

    2022年4月18日
    196
  • 个人微信号API接口,微信机器人

    个人微信号API接口,微信机器人前段时间公司需求开发一套自定义的微信机器人,需求是可以自己批量添加好友、批量打标签等进行好友管理,社群管理需要自动聊天,自动回复,发朋友圈,转发语音,以及定时群发等,还可以提取聊天内容,进行数据汇总,收藏快捷回复各种功能!一堆需求砸下来,调研开发了3个月,3个月啊!!!(主要被各种技术走偏路),终于成功了,都是走过的心酸泪,分享给大家,大家学习完,记得给我点个赞!!!大家一般需求点无非是以下几个需求:1.开发个人微信营销系统2.开发自定义的微信机器人,3.开发微信智能聊天客服系统

    2022年5月18日
    77
  • Spring3 MVC请求参数获取的几种方法

     一、      通过@PathVariabl获取路径中的参数  @RequestMapping(value="user/{id}/{name}",method=RequestMethod.GET) public String printMessage1(@PathVariable String id,@PathVariable String name, ModelMa…

    2022年2月24日
    64
  • 深入浅出讲解 ElasticSearch的安装与使用【建议收藏】

    深入浅出讲解 ElasticSearch的安装与使用【建议收藏】

    2022年2月20日
    58

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号