JAVA虚拟机性能监控工具

jps:虚拟机进程状况工具

  • jps命令格式:

jps 【options】 【hostid】

例如:

C:\Users\samsung>jps -l
1200 org.jetbrains.idea.maven.server.RemoteMavenServer
2264 org.jetbrains.jps.cmdline.Launcher
3720 com.example.springbootexample.SpringbootExampleApplication
1436
8492 sun.tools.jps.Jps

  • jps工具的主要选项
选项作用
-q只输出LVMID,省略主类的额名称。
-m输出虚拟机进程启动时传递给主类main()函数的参数。
-l输出主类的全名,如果进程执行的是jar包,输出jar路径。
-v输出虚拟机进程启动时jvm参数。
  • 名词解释

LVMID:Local Virtual Machine Identifier,本地虚拟机唯一ID

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

  • jstat 命令格式:

jstat 【 option vmid 【interval 【s|ms】【count】】】

例如:

查询进程101,100毫秒查询一次,共查询10次,查看垃圾回收情况:

jstat -gc 101 100 10

  • jstat 工具主要选项
选项作用
-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编译的方法

jinfo:Java配置信息工具

  • jinfo 命令格式:

jinfo 【option】 pid

例如:查看5312进程虚拟机的参数信息(包括默认的参数信息)

jinfo -flags 5312

【展示的结果太长,此处就不贴上结果了】

  • jinfo工具主要选项
选项作用
-flag <name>查看指定name的JVM flag
-flag [+|-]<name>启用或者禁用指定name的JVM flag
-flag <name>=<value>设置指定名称的name flag为给定的值
-flags查看JVM flags
-sysprops查看Java系统属性
<no option>不指定任何option,则表示查看所有的JVM flags和sysprops
-h | -help查看帮助信息

jmap:java内存映像工具

  • jmap命令格式

jmap 【option】 vmid

  • jmap工具主要选项
选项作用
-dump生成java对转储快照。格式为:-dump:[live,]format=b,file=<filename>,其中live自参数说明是否只dump出存活的对象。
-finalizerinfo显示出F-Queue中等待Finalizer线程执行finalize方法的对象。
-heap显示java堆详细信息,如使用哪种回收器、参数配置、分代状况等。
-histo显示堆中对象统计信息,包括类、实例数量、合计容量。
-permstat以ClassLoader为统计口径显示永久代内存状态。
-F当虚拟机进程的对-dump选项没有响应时,可使用这个选项强制生成dump快照。

jhat:虚拟机堆转储快照分析工具

jhat命令与jmap搭配使用,分析jmap生成的dump文件,jhat内置了一个微型的HTTP/HTML服务器,生成dump文件的分析结果后,可以在浏览器中查看。

例如,使用jhat分析名为dump.bin的dump文件,则命令如下:

> jhat dump.bin

Reading from d:\dump.bin...
Dump file created Thu Feb 14 22:31:50 CST 2019
Snapshot read, resolving...
Resolving 50368 objects...
Chasing references, expect 10 dots..........
Eliminating duplicate references..........
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.

显示 Server is ready 后,即可在浏览器中输入http://localhost:7000/ 就可以看到分析结果

jstak:Java堆栈跟踪工具

jstack命令用于生成虚拟机当前时刻的线程快照(一般你成为threaddump或者javacore文件)。

主要是用来定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的原因。

  • jstack 命令格式:

jstack 【option】 vmid

  • jstack 工具主要选项
选项作用
-F当正常输出的请求不被响应时,强制输出线程堆栈。
-l除堆栈外,显示关于锁的附加信息。
-m如过调用到本地方法的话,可以显示C/C++的堆栈。

jstack日志中会显示线程状态:

死锁Deadlock
执行中Runnable
等待资源Waiting on condition
等待获取监视器Waiting on monitor entry
暂停Suspended
对象等待中Object.wait() 或 TIMED_WAITING
阻塞Blocked
停止Parked

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值