jdk分析调优工具(转)
转自http://blog.csdn.net/roland101/archive/2008/03/16/2188585.aspx
最近压力测试和调优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',就可以了。
分享到:
相关推荐
4. **JInfo、JMap、JHAT**:这些是JDK自带的命令行工具,用于获取JVM信息、映射堆内存和进行堆转储分析。 5. **Grafana + Prometheus + JMX Exporter**:现代的监控解决方案,通过JMX Exporter将JVM指标暴露给...
本文将详细解读该文中的核心知识点,包括GC调优的基本技巧、编写对GC友好的代码方法,以及具体的调优步骤与案例分析。 ### 目标 文章的目标是让读者掌握一些基本的垃圾收集(GC)调优技巧和模式,并学会如何编写...
JDK调优命令是针对Java虚拟机性能调优的工具,可以用来监控和分析Java程序的运行状况。其中,Jinfo命令能够查看正在运行的Java程序的扩展参数、JVM参数以及Java系统属性,等同于调用System.getProperties()方法。而...
6. 监控和诊断:使用JVisualVM、jconsole等工具监控JVM内存状态,通过-XX:+PrintGC、-XX:+PrintGCDetails等参数输出GC日志,分析GC行为。 通过深入理解Sun JDK 1.6的内存管理机制和调优策略,开发者可以有效地提高...
接下来,我们来看VisualVM,这是JDK中最强大的调优工具之一。VisualVM提供了一个综合视图,用于查看在JVM上运行的Java应用程序的详细信息,包括本地和远程应用。与JConsole类似,VisualVM也可以在JDK的bin目录下启动...
JVM调优前戏之JDK命令行工具 JVM调优前戏之JDK命令行工具是JDK中的一组命令行工具,用于监测JVM运行时的状态。这些工具对于普通开发人员来说可能不太熟悉,但它们却是JVM调优的重要步骤。在这篇文章中,我们将详细...
本篇文章将详细介绍一些常用的GC调优工具,帮助开发者更好地理解和调整Java应用程序的内存管理。 首先,我们要了解JVM的内存模型,它主要分为年轻代、老年代和永久代(在Java 8中被元空间取代)。GC的主要工作就是...
标题中的“图形界面分析threadump_jstack分析工具_包含jdk”指的是一个专用于分析Java应用程序线程堆栈信息的工具,该工具具有图形用户界面,能够帮助开发者更直观地理解和解决程序中的线程问题。这个工具包含了JDK...
JDK22包含了丰富的命令行工具,如JVisualVM、jconsole等,用于分析和诊断应用程序。 总之,JDK22不仅提供了许多新特性以提升开发体验,还对性能和稳定性进行了优化。开发者应充分利用这些改进,以提高代码质量和...
Java性能优化是开发和运维过程中不可或缺的一环,而JProfiler是一款强大的Java调优工具,它提供了详尽的性能分析和内存管理功能,帮助开发者找出应用程序的瓶颈,提升系统效率。以下将详细介绍JProfiler的主要功能、...
本文将详细介绍几种常见的JVM性能调优工具,并通过实际案例帮助读者更好地理解和应用这些工具。 #### 一、jps (Java Virtual Machine Process Status Tool) `jps`是JDK自带的一个简单实用的工具,用于列出当前正在...
在本文件中,提到了JVM调优过程中使用的多种工具,接下来将详细说明这些知识点。 首先,JPS是JDK中一个非常实用的诊断命令,它可以列出当前机器中所有Java进程的进程ID,对于启动了web应用程序后,我们可以通过jps...
本篇文章将详细介绍Java开发工具包(JDK)中的一些重要监控和故障处理工具,这些工具可以帮助开发者识别和解决生产环境中的内存溢出问题,进而提升应用程序的性能和稳定性。 首先,我们来了解JDK提供的几个监控和...
这个名为"monitor_tuning_Demo"的压缩包文件,很显然是为了教授如何使用JDK提供的监控工具以及进行JVM(Java虚拟机)的调优。在实际应用中,这些工具和技术对于优化Java应用性能、定位问题以及确保系统健康运行至关...
例如,理解JVM(Java Virtual Machine)的工作原理,熟悉如何使用JDK的性能分析工具进行调优,都是Java开发者必备的技能。 总结起来,"工具jdk资源共享"主题涉及到的是Java SE 6(JDK 1.6)这一版本的开发工具和...
使用工具如VisualVM、JProfiler等可以帮助分析JVM状态,辅助调优决策。 总的来说,JVM体系结构和GC调优是Java开发者的必备技能。通过深入理解这些概念和技术,我们可以有效地提升Java应用的性能,降低系统资源消耗...
【性能测试监控指标及分析调优】 在性能测试中,主要关注的是系统在高负载条件下的表现,以识别潜在的性能瓶颈。以下是一些关键的知识点: **一、系统性能瓶颈** 1. **CPU**: 当CPU使用率过高,特别是在75%以上时...
### JDK内置工具使用技巧详解 #### 一、引言 JDK(Java Development Kit)作为Java编程语言的核心组件,不仅提供了必要的编译、调试及文档工具,还配备了一系列用于监控和诊断应用程序运行状态的工具。本文将详细...
要生成heapdump,可以使用JVM内置的命令行选项,例如`-XX:+HeapDumpOnOutOfMemoryError`来配置JVM,在出现OOM错误时自动创建heapdump,或者使用`jmap`工具(需要与JDK配套)手动触发dump: ```bash jmap -dump:...