天天看点

第三章 虚拟机性能监控与故障处理工具一、前言二、虚拟机性能监控

<a href="#%E4%B8%80%E5%89%8D%E8%A8%80">一前言</a>

<a href="#%E4%BA%8C%E8%99%9A%E6%8B%9F%E6%9C%BA%E6%80%A7%E8%83%BD%E7%9B%91%E6%8E%A7">二虚拟机性能监控</a>

<a href="#21jps%E8%99%9A%E6%8B%9F%E6%9C%BA%E8%BF%9B%E7%A8%8B%E7%8A%B6%E5%86%B5%E5%B7%A5%E5%85%B7">1JPS虚拟机进程状况工具</a>

<a href="#22jstat%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%BB%9F%E8%AE%A1%E4%BF%A1%E6%81%AF%E7%9B%91%E8%A7%86%E5%B7%A5%E5%85%B7">2jstat虚拟机统计信息监视工具</a>

<a href="#23jinfojava%E9%85%8D%E7%BD%AE%E4%BF%A1%E6%81%AF%E5%B7%A5%E5%85%B7">3jinfoJava配置信息工具</a>

<a href="#24jmapjava%E5%86%85%E5%AD%98%E6%98%A0%E5%83%8F%E5%B7%A5%E5%85%B7">4jmapJava内存映像工具</a>

<a href="#25jhat%E8%99%9A%E6%8B%9F%E6%9C%BA%E5%A0%86%E5%AD%98%E5%82%A8%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7">5jhat虚拟机堆存储分析工具</a>

<a href="#26jstackjava%E5%A0%86%E6%A0%88%E8%B7%9F%E8%B8%AA%E5%B7%A5%E5%85%B7">6jstackJava堆栈跟踪工具</a>

<a href="#27jdk%E5%8F%AF%E8%A7%86%E5%8C%96%E5%B7%A5%E5%85%B7">7JDK可视化工具</a>

<a href="#271jconsolejava%E7%9B%91%E8%A7%86%E4%B8%8E%E7%AE%A1%E7%90%86%E6%8E%A7%E5%88%B6%E5%8F%B0">71JConsoleJava监视与管理控制台</a>

<a href="#272-%E6%AD%BB%E9%94%81%E5%AE%9E%E4%BE%8B">72 死锁实例</a>

除开java与javac,你还知道JDK的其他命名吗?

虚拟机故障处理与调优一般怎么处理?

JDK强大而且小巧的工具,可以帮助我们实现很多骚操作,如果线上服务器你实在难以近身,还提供了tools.jar的类库以备你在应用程序中实现强大监控功能,让你骚起来。同时帮你解决一些虚拟机故障。

第三章 虚拟机性能监控与故障处理工具一、前言二、虚拟机性能监控
jps命令:jps [options] [hostid]

选项

作用

-q

只输出LIMID,省略主类的名称

-m

输出虚拟机进程启动时候传递给main()函数的参数

-l

输出主类的全名,如果进程执行的Jar包,输出的Jar路径

-v

输出虚拟机进程启动时候的参数

示例如下:

它显示进程汇总的类加载、内存、垃圾收集、JIT等数据。

jstat命令格式:jstat [option vmid ] [interval [s|ms] [count]]

-class

监视类装载、卸载数量、总空间以及类装载所消耗的时间

-gc

监视Java堆状况、包括Eden区、两个Survivor区、老年代、永久带等 容量等信息

-gccapacity

监视信息与gc相同,关注各个区域使用的最大、最小空间

-gcuti

监视信息与gc相同,关注使用空间占总空间的百分比

-gcnew

监视新生代GC情况

-gcnewcapacity

与gcnew相同,关注使用最大、最小空间

-gcold

监视老年代GC情况

-gcoldcapacity

关注使用最大、最小空间

-gcpermcapatity

输出永久代最大、最小空间

-compiler

输出JIT编译过的方法、耗时

-printcompilation

输出已经被JIT编译过的方法

实例如下

实时查询虚拟机参数

jinfo命令格式:jinfo [options] pid

查询finalize执行队列、Java堆和永久代信息,使用哪种收集器等。

-dump

生成存储快照 格式:-dump [live,] format=b,file=,其中live说明是否只是dump存活的对象

-finalizerinfo

线上F-Queue在县城执行finalize方法对象

-heap

显示使用回收器、参数配置,分代情况

-histo

显示堆中统计信息,包括类、实例数量、合计内容

-permstat

以ClassLoader为统计口径显示永久代状态 1.8无

生成此时此刻的线程快照,为了定位线程长时间停顿原因、线程死锁、死循环、请求外部资源等待导致的长时间停顿的原因。

jstack命名格式:jstack [options] vmid

-F

当正常的请求不被响应时候,强制输出线程堆栈

-I

显示关于锁的附加信息

如果调用的是c,可以打印c/c++堆栈

实际用法:我们在调用线程的时候,有一个getAllstackTraces()方法,可以一样输出StackTraceElement对象。

结果:

第三章 虚拟机性能监控与故障处理工具一、前言二、虚拟机性能监控

结果

第三章 虚拟机性能监控与故障处理工具一、前言二、虚拟机性能监控