JVM-监控命令(5)

工具是知识技能的一层包装。在jdk的bin中,除了java.exe,javac.exe,还有不少用于监视和处理的工具,并且这些工具都是基于jdk/lib/tools.jar来实现的。 “采用Java代码来实现这些监控工具是有特别用意的:当应用程序部署到生产环境后,不管是直接接触物理服务器仍是远程Telnet到服务器上均可能会受到限制。借助tools.jar类库里面的接口,咱们能够直接在应用程序中实现功能强大的监控分析功能

1、jps 查看虚拟机的进程情况

jps(JVM process status) 做用单一,“列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机惟一ID(Local Virtual Machine Identifier,LVMID”html

jps[options][hostid] 命令格式
 jps -l 输出主类的全名
 jps -v 查看jvm的全部的参数

2、 jstat 虚拟机统计信息监视工具

jstat(jvm statistics monitoring tool)虚拟机统计信息监控的工具,“它能够显示本地或者远程[1]虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形界面,只提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具”.java

“使用jstat工具在纯文本状态下监视虚拟机状态的变化”数据库

“jstat[option vmid[interval[s|ms][count]]]”  option,vmID,interval 查询的间隔,count 查询的次数

“假设须要每250毫秒查询一次进程2764垃圾收集情况,一共查询20次,那命令应当是: jstat-gc 2764 250 20”浏览器

-gc 监视jvm中堆的状况 -gcutil 更多的关注的是占内存的百分比 -gcold 关注老年代的gc状况 -compile jit编译过的方法服务器

“D:\Develop\Java\jdk1.6.0_21\bin>jstat-gcutil 2764
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 0.00 6.20 41.42 47.20 16 0.105 3 0.472 0.577
查询结果代表:这台服务器的新生代Eden区(E,表示Eden)使用了6.2%的空间,两个Survivor区(S0、S1,表示Survivor0、Survivor1)里面都是空的,老年代(O,表示Old)和永久代(P,表示Permanent)则分别使用了41.42%和47.20%的空间。程序运行以来共发生Minor GC(YGC,表示Young GC)16次,总耗时0.105秒,发生Full GC(FGC,表示Full GC)3次,Full GC总耗时(FGCT,表示Full GC Time)为0.472秒,全部GC总耗时(GCT,表示GC Time)为0.577秒

3、jinfo 查看虚拟机各项参数

jinfo(configuration info for java)做用是实时地查看和调整虚拟机各项参数” “jps命令的-v参数能够查看虚拟机启动时显式指定的参数列表,但若是想知道未被显式指定的参数的系统默认值,除了去找资料外,就只能使用jinfo的-flag选项进行查询了”网络

jinfo还可使用-sysprops选项把虚拟机进程的System.getProperties()的内容打印出来”eclipse

命令格式:jinfo[option]pidjvm

“查询CMSInitiatingOccupancyFraction参数值。
C:\>jinfo-flag CMSInitiatingOccupancyFraction 1444
-XX:CMSInitiatingOccupancyFraction=85”

4、jmap 内存映像工具

jmap(Memory Map for Java)命令用于生成堆转储快照(通常称为heapdump或dump文件) “map的做用并不只仅是为了获取dump文件,它还能够查询finalize执行队列、Java堆和永久代的详细信息”函数

“3500是经过jps命令查询到的LVMID。”
“jmap-dump:format=b,file=eclipse.bin 3500
Dumping heap to C:\Users\IcyFenix\eclipse.bin……
Heap dump file created”

5、jhat 堆转储分析工具

jhat(JVM heap analysis tool),与jmap来一块儿进行使用,用来分析用jmap来生成的堆转储快照。工具

jhat中自带一个小型的http/html的服务器,那么在生成了dump文件的分析结构之后,能够去浏览器中去看

可是jhat通常不用,一方面是由于命令行 ,另外一方面是由于分析是一个麻烦的事情,消耗大量的硬件资源

6、 jstack 堆栈跟踪工具

jstack(stack trace for java)“用于生成虚拟机当前时刻的线程快照(通常称为threaddump或者javacore文件) “线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的缘由,如线程间死锁、死循环、请求外部资源致使的长时间等待等都是致使线程长时间停顿的常见缘由。线程出现停顿的时候经过jstack来查看各个线程的调用堆栈,就能够知道没有响应的线程到底在后台作些什么事情,或者等待着什么资源。”

7、“HSDIS:JIT生成代码反汇编”

“在Java虚拟机规范中,详细描述了虚拟机指令集中每条指令的执行过程、执行先后对操做数栈、局部变量表的影响等细节”

8、jconsole

jconsole(java Monitoring and Management console)基于JMX的可视化和管理的工具 “概述”、“内存”、“线程”、“类”、“VM摘要”、“MBean”,“概述”页签显示的是整个虚拟机主要运行数据的概览,其中包括“堆内存使用状况”、“线程”、“类”、“CPU使用状况”4种信息的曲线图,这些曲线图是后面“内存”、“线程”、“类”页签的信息汇总”

“若是上面的“内存”页签至关于可视化的jstat命令的话,“线程”页签的功能至关于可视化的jstack命令,遇到线程停顿时可使用这个页签进行监控分析”

其中“jstack命令的时候提到过线程长时间停顿的主要缘由主要有:等待外部资源(数据库链接、网络资源、设备资源等)、死循环、锁等待(活锁和死锁”

9、 visualVM 多合一故障处理工具

“VisualVM(All-in-One Java Troubleshooting Tool)是到目前为止随JDK发布的功能最强大的运行监视和故障处理程序”

相关文章
相关标签/搜索