JKD工具介绍
1. jps
功能查看当前JDK环境有多少个JAVA进程,和该进程的相关参数。
也就是说使用当前JDK的程序有多少个,每个程序的JVM参数,进程ID,主类路径信息,可以使用该工具查看。
例1:查看当前使用该JDK的程序有多少个。列出进程ID
上面结果表示有3个Java进程,列表为进程编号。
例2:查看使用当前JDK的程序的Main函数类路径
上面结果表示进程编号的Main函数的全路径
例3:查看使用当前JDK程序的Main函数参数
以下例子非常有用可以看到你的tomcat虚拟内存设置,时区设置等信息。
例4:查看使用当期JDK的程序的JVM参数
2. jmap
Java 内存Dump文件生成,
Dump文件是Java内存镜像。在运行过程中你可以将一个内存镜像取出,然后可以通过分析工具分析内存结构这个在性能优化,查找内存异常的时候会经常使用。
查看给定一个进程堆中的细节,也可以查看进程里面每个Class实例化多少个。
例1:将内存中的所有内容镜像到一个文件
以上命令会将进程ID为500的程序内存镜像到C:\dump.log文件。
可以使用分析工具分析。
例2:将所有Class实例化了多少次等信息导出到一个文件
以上命令结果去查看c:\histo.log 文件即可明白
3. jstack
java的线程信息在查询性能问题,线程堵塞等信息是时间常用。
将线程信息保存到一个文件
例:将线程信息保存到一个文件
命令中5332是程序的进程ID
【线程Dump】文件分析工具
该工具是IBM的线程分析工具,经测试也同样适用与Sun的JDK的【线程Dump文件】
该工具可以分析出线程阻塞,死锁等信息等信息。
如上图,可以看到有个线程阻塞了很多其它线程,还可以看到该线程执行的什么操作。
4. 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每三行显示一下标题。
5. visualvm
/
该工具在JDK1.6 _7之后的版本里面已经自带,之前的JDK版本可以独立下载使用。
VisualVM简介
简单说来,VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力。所有这些都是免费的!它囊括的命令行工具包括jstat, JConsole, jstack, jmap 和 jinfo,这些工具与JDK的标准版本是一致的。
你可以使用VisualVM生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和CPU分析,同时它还支持在MBeans上进行浏览和操作。尽管VisualVM自身要在JDK6这个版本上运行,但是JDK1.4以上版本的程序它都能监控。
对于我来说,这些功能都是至关重要的。以前我一直在使用如YourKit这样的一些付费软件来检测我的应用软件,但现在我可以用VisualVM这样一个开源工具来实现同样的功能。更何况,有谁比能Sun公司更了解JVM呢?
内存Dump文件分析
该工具需要内存非常高,必须使用64位JDK大内存情况下才能正常使用
JKD工具介绍
1. jps
功能查看当前JDK环境有多少个JAVA进程,和该进程的相关参数。
也就是说使用当前JDK的程序有多少个,每个程序的JVM参数,进程ID,主类路径信息,可以使用该工具查看。
例1:查看当前使用该JDK的程序有多少个。列出进程ID
上面结果表示有3个Java进程,列表为进程编号。
例2:查看使用当前JDK的程序的Main函数类路径
上面结果表示进程编号的Main函数的全路径
例3:查看使用当前JDK程序的Main函数参数
以下例子非常有用可以看到你的tomcat虚拟内存设置,时区设置等信息。
例4:查看使用当期JDK的程序的JVM参数
2. jmap
Java 内存Dump文件生成,
Dump文件是Java内存镜像。在运行过程中你可以将一个内存镜像取出,然后可以通过分析工具分析内存结构这个在性能优化,查找内存异常的时候会经常使用。
查看给定一个进程堆中的细节,也可以查看进程里面每个Class实例化多少个。
例1:将内存中的所有内容镜像到一个文件
以上命令会将进程ID为500的程序内存镜像到C:\dump.log文件。
可以使用分析工具分析。
例2:将所有Class实例化了多少次等信息导出到一个文件
以上命令结果去查看c:\histo.log 文件即可明白
3. jstack
java的线程信息在查询性能问题,线程堵塞等信息是时间常用。
将线程信息保存到一个文件
例:将线程信息保存到一个文件
命令中5332是程序的进程ID
【线程Dump】文件分析工具
该工具是IBM的线程分析工具,经测试也同样适用与Sun的JDK的【线程Dump文件】
该工具可以分析出线程阻塞,死锁等信息等信息。
如上图,可以看到有个线程阻塞了很多其它线程,还可以看到该线程执行的什么操作。
4. 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每三行显示一下标题。
5. visualvm
/
该工具在JDK1.6 _7之后的版本里面已经自带,之前的JDK版本可以独立下载使用。
VisualVM简介
简单说来,VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力。所有这些都是免费的!它囊括的命令行工具包括jstat, JConsole, jstack, jmap 和 jinfo,这些工具与JDK的标准版本是一致的。
你可以使用VisualVM生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和CPU分析,同时它还支持在MBeans上进行浏览和操作。尽管VisualVM自身要在JDK6这个版本上运行,但是JDK1.4以上版本的程序它都能监控。
对于我来说,这些功能都是至关重要的。以前我一直在使用如YourKit这样的一些付费软件来检测我的应用软件,但现在我可以用VisualVM这样一个开源工具来实现同样的功能。更何况,有谁比能Sun公司更了解JVM呢?
内存Dump文件分析
该工具需要内存非常高,必须使用64位JDK大内存情况下才能正常使用
发布评论