`
java-boy
  • 浏览: 248391 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JDK NEW TOOLS——jps、jinfo、jstat、jmap、jconsole

    博客分类:
  • Java
阅读更多
最近压力测试和调优Liferay portal,所以需要找到一种工具,可以比较好的监测VM工具。本来想使用商用工具,但偶然间发现SUN 的JDK中新添了几个工具,并且非常好用。秉承着有免费,不用商用的原则。开始使用新的JDK工具,以下简单介绍一下这几种工具。(注:本文章下的所有工具都存在JDK5.0以上版本的工具集里,同javac一样,不须特意安装)

我一共找到以下五个工具:
jinfo:可以输出并修改运行时的java 进程的opts。
jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。
jstat:一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。
jmap:打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。
jconsole:一个java GUI监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM。

接下来是对这些工具的详细介绍:

从最简单的jstat工具开始:我想很多人都是用过unix系统里的ps命令,这个命令主要是用来显示当前系统的进程情况,有哪些进程,及其id。jps 也是一样,它的作用是显示当前系统的java进程情况,及其id号。我们可以通过它来查看我们到底启动了几个java进程(因为每一个java程序都会独占一个java虚拟机实例),和他们的进程号(为下面几个程序做准备),并可通过opt来查看这些进程的详细启动参数。
使用方法:在当前命令行下打 jps(需要JAVA_HOME,没有的话,到改程序的目录下打)

接下来是jstat,我之所以这次调优Liferay portal是因为,liferay在默认的情况下,并发用户一多就会产生perm out of momery异常。虽然很开就解决了,但发现对VM内存使用量监控的重要性。通过google,很快的发现了jstat这个工具。
jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。以下详细介绍各个参数的意义。
jstat -class pid:显示加载class的数量,及所占空间等信息。
jstat -compiler pid:显示VM实时编译的数量等信息。
jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。
jstat -gccapacity:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。
jstat -gcnew pid:new对象的信息。
jstat -gcnewcapacity pid:new对象的信息及其占用量。
jstat -gcold pid:old对象的信息。
jstat -gcoldcapacity pid:old对象的信息及其占用量。
jstat -gcpermcapacity pid: perm对象的信息及其占用量。
jstat -util pid:统计gc信息统计。
jstat -printcompilation pid:当前VM执行的信息。
除了以上一个参数外,还可以同时加上 两个数字,如:jstat -printcompilation 3024 250 6是每250毫秒打印一次,一共打印6次,还可以加上-h3每三行显示一下标题。

jmap是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。使用方法 jmap -histo pid。如果连用SHELL jmap -histo pid>a.log可以将其保存到文本中去,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。jmap -dump:format=b,file=String 3024可以将3024进程的内存heap输出出来到String文件里。

jinfo:的用处比较简单,就是能输出并修改运行时的java进程的运行参数。用法是jinfo -opt pid 如:查看2788的MaxPerm大小可以用 jinfo -flag MaxPermSize 2788。

jconsole是一个用java写的GUI程序,用来监控VM,并可监控远程的VM,非常易用,而且功能非常强。由于是GUI程序,这里就不详细介绍了,不会的地方可以参考SUN的官方文档。
使用方法:命令行里打 jconsole,选则进程就可以了。

以下是这些工具的SUN官方说明:
jps:http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jps.html
jstat:http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jstat.html
jmap:http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jmap.html
jconsole:http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html

附加:windows查看进程号,由于任务管理器默认的情况下是不显示进程id号的,所以可以通过如下方法加上。ctrl+alt+del打开任务管理器,选择‘进程’选项卡,点‘查看’->'选择列'->加上'PID',就可以了。
分享到:
评论

相关推荐

    JVM监控工具介绍jstack_jconsole_jinfo_jmap_jdb_jstat

    本文将介绍五种JVM监控工具:jstack、jconsole、jinfo、jmap和jdb。 jstack jstack是一款命令行工具,用于生成Java应用程序的崩溃dump文件的信息。该工具可以attach到正在运行的Java应用程序中,查看当前运行的...

    JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jstat.doc

    本文将深入探讨六种关键的JVM监控工具——`jstack`, `jconsole`, `jinfo`, `jmap`, `jdb`, `jstat`——它们各自的功能、应用场景及如何帮助开发者和运维人员诊断并解决JVM中的复杂问题。 #### 1. jstack —— Java ...

    JDK自带调试工具doc

    以上工具的使用通常需要与相应的帮助文档配合,如`java.chm`可能包含了JDK的综合帮助文档,而`jstat - Java Virtual Machine Statistics Monitoring Tool.htm`、`jps - Java Virtual Machine Process Status Tool....

    JAVA JVM内存监控工具总结

    它包含的工具如jps、jstat、jmap、jinfo、jstack和JConsole,都是JDK的标准组成部分,帮助开发者深入理解JVM的内存状态。 1. **jps (Java Virtual Machine Process Status Tool)** 类似于Unix系统中的`ps`命令,...

    linux切换JDK脚本

    --slave /usr/bin/jconsole jconsole /opt/jdk1.6.0_11/bin/jconsole --slave /usr/bin/jdb jdb /opt/jdk1.6.0_11/bin/jdb --slave /usr/bin/jhat jhat /opt/jdk1.6.0_11/bin/jhat --slave /usr/bin/jinfo jinfo...

    leetcode回朔与贪心的题目-interview:面试官的编程

    JDK 2.1 内存区域与OOM 2.1.1 运行时数据区域 2.1.2 2.2 垃圾收集器与内存分配策略 2.3 类加载机制 2.4 JVM 内存模型 2.5 JVM 性能监控工具与调优 2.5.1 jps 2.5.2 jstat 2.5.3 jinfo 2.5.4 jmap 2.5.5 jhat 2.5.6 ...

    jdk-6u45-windows-x64.rar

    7. **其他工具**:如appletviewer、apt、extcheck、idlj、jarsigner、jconsole、jdb、jdwp、jhat、jinfo、jmap、jmc、jps、jrunscript、jstack、jstat、jstatd等,它们提供了各种附加功能,如性能监控、内存分析等。...

    java—JDK内置工具使用技巧详解

    ### JDK内置工具使用技巧详解 #### 一、引言 JDK(Java Development Kit)作为Java编程语言的核心组件,不仅提供了必要的编译、调试及文档工具,还配备了一系列用于监控和诊断应用程序运行状态的工具。本文将详细...

    jdk-7u75-windows-x64.zip

    9. **其他实用工具**:如appletviewer、extcheck、idlj、jar、jarsigner、jarsigner.bat、java-rmi.cgi、jconsole、jdb、jhat、jinfo、jnlp、jmap、jmc、jps、jrunscript、jsadebugd、jstack、jstat、jstatd、...

    jvm监控工具介绍

    为了有效地监控和调试Java应用程序,Oracle JDK提供了多种强大的命令行工具,如jconsole、jmap、jstat等。下面将详细解释这些工具的功能和使用场景。 1. **jstack**: jstack是一种用于生成Java线程堆栈跟踪的工具...

    Java虚拟机(第二版)1

    第4章涵盖了JDK提供的各种诊断工具,如jps、jstat、jinfo、jmap、jhat、jstack和HSDIS,它们是分析和调试JVM问题的得力助手。4.3章节介绍了可视化工具JConsole和VisualVM,帮助开发者直观地监控和分析Java应用程序的...

    jvm+watch.pdf

    JDK 5.0引入的新工具极大地简化了Java应用程序的调试过程,尤其是jps和jstat这两个工具,在日常开发中极为实用。通过这些工具,开发者可以更轻松地诊断问题、优化性能并提高应用的整体稳定性。对于从事Java开发的...

    linux x86 jdk 1.8

    Linux平台上的Java Development Kit(JDK)是Java编程语言的核心组件,它包含了编译、调试、性能分析等工具,使得开发者能够在Linux系统上编写、测试和运行Java应用程序。本资源为"linux x86 jdk 1.8",特别针对32位...

    JDK_V1.8.0u172_x64.rar

    - **jps**、**jinfo**、**jstat**和**jstack**:系统监控和诊断工具,提供进程状态、配置信息、统计信息和线程堆栈跟踪。 **总结** JDK V1.8.0u172是Java 8的一个重要更新,它的API规范、新功能以及丰富的开发工具...

    jdk-8u144-windows-x32.rar

    10. **jps**,**jstat**,**jinfo**,**jmap**,**jhat**等:这些是用于系统监控和故障排查的命令行工具。 JDK 8的亮点特性包括: 1. **Lambda表达式**:引入函数式编程概念,使得代码更加简洁和高效。 2. **方法...

    JDK命令详解

    **JDK命令详解** 在Java开发中,JDK(Java Development Kit)是不可或缺的一部分,它提供了编译、运行和调试Java程序所需的所有工具。本文将深入解析JDK中的一些核心命令,帮助开发者更好地理解和利用这些工具。 #...

    Tomcat教程-JVM相关工具.docx

    jvisualvm是另一个功能强大的Java应用性能分析工具,集成了多种JDK工具的功能,如jconsole、jstack、jmap等,提供了一个统一的可视化界面。 了解并熟练运用这些JVM工具,可以帮助开发者和运维人员更好地理解Tomcat...

Global site tag (gtag.js) - Google Analytics