Java GC之常见监控可视化工具总结(下)

上一篇文章总结一下监控和分析的常见命令,那些是基础,但是有些同学看到命令行就害怕,所以这篇文件总计一下两个常用的可视化工具。 JConsole JConsole工具在JDK/bin目录下,启动JConsole后,将自动搜索本机运行的jvm进程,不需要jps命令来查询指定。双击其中一个jvm进程即可开始监控,也可使用“远程进程”来连接远程服务器 进入JConsole主界面,有“概述”、“内存”、“线程”、“类”、“VM摘要”和”Mbean”六个页签: 内存页签相当于jstat命令,用于监视收集器管理的虚拟机内存(Java堆和永久代)变化趋势,还可在详细信息栏观察全部GC执行的时间及次数 线程页签:线程长时间停顿的主要原因有:等待外部资源(数据库连接、网络资源、设备资源等)、死循环、锁等待(活锁和死锁) 最后一个常用页签,VM页签,可清楚的了解显示指定的JVM参数及堆信息 VisualVM:多合一故障处理工具 VisualVM是一个集成多个JDK命令行工具的可视化工具。VisualVM基于NetBeans平台开发,它具备了插件扩展功能的特性,通过插件的扩展,可用于显示虚拟机进程及进程的配置和环境信息(jps,jinfo),监视应用程序的CPU、GC、堆、方法区及线程的信息(jstat、jstack)等。VisualVM在JDK/bin目录下 ①. 安装插件: 工具- 插件 ②. 监控垃圾回收 在左侧的“Application”测看下,有个“Local”节点,所有本地正在运行的Java应用都将罗列在这里。Java VisualVM是一个Java应用。所以,它将自己也列在这里。为了方便学习,我们将监控Java VisualVM自身的垃圾回收过程。双击“Local”节点下的VisualVM图标,现在,应用监视窗口在右侧打开。我们关注的是“Visual GC”,点击它 再配合其他的标签页,例如“Threads”以及线程转储你,我们就可以深入详细地了解这方面的内容。在“监视”标签页,我们可以监控整个堆内存的使用情况,这些都不贴图了,大家可以随便玩。 ③. 在VisualVM中生成dump文件 参考资料:周志明《深入理解Java虚拟机》第二版第四章

April 4, 2017 · 1 min · 23 words · Bridge Li

Java GC之常见监控与分析命令总结(上)

上一篇文章简单写了几种常见的垃圾收集器的参数设置,设置参数的时候离不开对对系统进行监控和分析,所以总结一下监控和分析的常见命令。 jps:JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程 命令格式: jps \[options\] \[hostid\] hostid为RMI注册表中注册的主机名,其他常用参数如下: -q:只输出LVMID,省略主类的名称 -m:输出虚拟机进程启动的时候传递给主类main()方法的参数 -l:输出主类的全名,如果进程执行的是jar包,输出jar路径 -v:输出虚拟机进程启动时JVM参数 命令执行样例: jps -l jstat:JVM Statistics Monitoring Tool,用于收集Hotspot虚拟机各方面的运行数据 命令格式: jstat \[option vmid [interval[s|ms\] \[count\]]] 对于命令格式中的VMID和LVMID,如过是本地虚拟机进程,VMID和LVMID是一致的,如果是远程虚拟机,那VMID的格式应当是: \[protocol:\] \[//\] lvmid[@hostname[:port]/servername] interval和count代表查询的间隔和次数,如果省略这两个参数,说明只查一次,其他常用参数: -class:监视装载类、卸载类、总空间以及类装载所耗费的时间 -gc:监视java堆状况,包括eden区、两个survivor区、老年代、永久代等的容量、已用空间、GC时间合计信息 -gccapacity:监视内容与-gc基本相同,但输出主要关注java堆各个区域使用到最大、最小空间 -gcutil:监视内容与-gc基本相同,但输出主要关注已使用控件占总空间的百分比 -gccause:与-gcutil功能一样,但是会额外输出导致上一次gc产生的原因 -gcnew:监视新生代GC情况 -gcnewcapacity:监视内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间 -gcold:监视老年代GC情况 -gcoldcapacity:监视内容与-gcold基本相同,输出主要关注使用到的最大、最小空间 -gcpermcapacity:输出永久代使用到的最大、最小空间 -compiler:输出JIT编译过的方法、耗时等信息 -printcompilation:输出已经被JIT编译过的方法 命令执行样例: jstat -gcutil 2764 1000 jinfo:Configuration Info for Java,显示虚拟机的配置信息 使用jps命令的-v参数可以查看虚拟机启动时显示指定的参数列表,但如果想知道未被显式指定的参数的系统默认值,除了去找资料以外,就得使用jinfo的-flag选项,命令格式: jinfo [option] pid 执行样例:查询CMSInitiatingOccupancyFraction参数值 jinfo -flag CMSInitiatingOccupancyFraction 2764 jmap:Memory Map for Java,生成虚拟机的内存转储快照(heapdump文件) 命令格式: ...

March 19, 2017 · 1 min · 159 words · Bridge Li