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监视了。

JDK自带工具jps,jstat,jmap,jconsole使用的更多相关文章

  1. jvm性能监控(3)-jdk自带工具 jps jstack jmap

    一.概要: jps -l 查看现有的java进程 jps -l 显示所有正在运行的java进程id   jstack 查看Java线程      jstack -l pid; 做thread dump ...

  2. 几个与JVM相关的JDK工具:jps, jstat, jmap

    在项目中遇到OOM(Out of Memory)的问题,为了分析内存和JVM的垃圾回收器GC问题,一并把JVM相关的一些工具也研究了一下: jps:Java进程查看工具,实际上它和Unix/Linux ...

  3. jvm系列六、windows用jdk自带工具jps、jstack找出性能最差的代码

    一.运行程序TestGC 二.用jps找出当前应用的进程号PID 到jdk安装目录的bin目录下输入: jps -l PID为1264 三.启动Process Explorer(下载地址:https: ...

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

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

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

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

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

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

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

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

  8. JDK自带工具keytool生成ssl证书

    前言: 因为公司项目客户要求使用HTTPS的方式来保证数据的安全,所以木有办法研究了下怎么生成ssl证书来使用https以保证数据安全. 百度了不少资料,看到JAVA的JDK自带生成SSL证书的工具: ...

  9. 利用JDK自带工具监控JVMCPU和内存指标

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

随机推荐

  1. apache FtpServer 整合spring部署

    我们在项目中可能会出现这样的需求,使用ftp上传很大的文件后对需要对文件进行相应的逻辑处理,这时我们可以使用apache ftpServer来处理这段逻辑,只要我们做相应的部署和编写我们的逻辑代码,这 ...

  2. 【转】C/C++程序员应聘常见面试题深入剖析

    1.引言 本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵.文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见­. 许多面试题看似简单,却需要深厚的基 ...

  3. ios应用view之间数据传递的方式

    对于不同的viewcontroller之间数据的共享和处理 采用代理的方式,子viewcontroller设计代理协议,并定义协议接口,父viewcontroller实现协议接口,实现子视图控制器退出 ...

  4. mock server相关解决方案

    前后端分离之后 前后端分离后, 大家从此进入了所谓的并行开发时代. 一旦完成前后端的(边界)分工, 大家就可以各司其职了. 前端在与后端交互时, 要想有效地提高工作效率, 后端的接口文档就是重中之重了 ...

  5. Hello World 老调重谈

    namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine( ...

  6. ExtJS4.x动态加载js文件

    动态加载js文件是ext4.x的一个新特性,可以有效的减少浏览器的压力,提高渲染速度.如动态加载自定义组件 1.在js/extjs/ux目录下,建立自定义组件的js文件. 2.编写MyWindow.j ...

  7. C#之回到了最初的起点----解决方案、项目、程序集、命名空间

    C#之回到了最初的起点----解决方案.项目.程序集.命名空间 ——Percy 初学者很容易把这些概念搞混淆.先说说项目(Project),通俗的说,一个项目可以就是你开发的一个软件.在.Net下,一 ...

  8. SQL随机查询,显示行号,查询数据段

    1.显示行号 如果数据没有删除的情况下主键与行号是一致的,但在删除某些数据,行号就与主键不一致了,这时需要查询行号就需要用新的方法,在SQL Server2005之前,需要使用临时表,但在SQL Se ...

  9. Spring 之 注解详解

    概述 注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作.如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO ...

  10. C#生成缩略图的方法

    1.需要添加应用System.Drawing.dll 2.命名空间 using System.IO; using System.Drawing; using System.Drawing.Imagin ...