前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java虚拟机常用的性能监控工具

Java虚拟机常用的性能监控工具

作者头像
小诸葛
发布2020-10-10 17:25:07
8980
发布2020-10-10 17:25:07
举报
文章被收录于专栏:方法论方法论

jps(虚拟机进程状况工具)

jps(JVM Process Status Tool)是JDK中的一个小工具,它的功能和UNIX的ps命令类似:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一ID(LVMID,Local Virtual Machine Identifier),LVMID和操作系统的进程ID是一致的,当同时启动多个虚拟机进程,无法根据进程名称进行定位时,就可以使用jps命令显示主类的功能来区分。

jps命令格式:

jps [options] [hostid]

jps使用示例:

jps还可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态,参数hostid为RMI注册表中注册的主机名,jps的其他常用选项如下:

-q 只输出LVMID,省略主类的名称

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

-l 输出主类的全名,如果进程执行的是jar包,则输出JAR路径

-v 输出虚拟机进程启动时的JVM参数

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

jstat(JVM Statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或远程虚拟机进程中的类加载、内存、垃圾收集、即时编译器等运行时数据,由于服务器一般都是没有GUI界面的,因此可以使用此工具定位性能问题。

jstat命令格式为:

jstat [option vmid [interval [s|ms] [count]]]

对于命令格式中的VMID需要注意的是:如果是本地虚拟机进程,VMID就是LVMID,对于远程虚拟机进程,那么VMID的格式就是:

[protocol:] [//]vmid [@hostname[:port] /servername]

参数interval和count代表查询间隔和查询次数,如果省略了,则表示只查询一次。假设每2000毫秒查询进程16656新生代垃圾收集情况,一共查询10次,则命令应当是:

jstat -gcnew 16656 2000 10

查询示例:

选项option表示用户希望查询的虚拟机信息,主要分为三类:类加载、垃圾收集、运行期编译状况,主要有如下选项:

-class 监视类加载、卸载数量、总空间以及类装载所耗费的时间

-gc 监视Java堆状况,包括Eden区、2个Survivor区、老年代、元空间等的容量,已用空间,垃圾收集时间合计等信息

-gccapacity 监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间

-gcutil 监视内容与-gc基本相同,但输出主要关注一使用空间占总空间的百分比

-gccause 与-gcutil功能一样,但是会额外输出导致上一次垃圾收集产生的原因

-gcnew 监视新生代垃圾收集情况

-gcnewcapacity 监视内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间

-gcold 监视老年代垃圾收集情况

-gcoldcapacity 监视内容与-gcold基本相同,输出主要关注使用到的最大、最小空间

-gcmetacapacity 输出原空间使用到的最大、最小空间

-compiler 输出即时编译器编译过的方法、耗时等信息

-printcompilation 输出已经被即时编译的方法

jmap(Java内存映像工具)

jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为heapdump或dump文件)。如果不使用jmap命令,也可以在启动虚拟机时添加-XX:HeapDumpOnOutOfMemoryError参数,当虚拟机发生内存溢出异常之后就会自动生成堆转储快照文件;通过添加-XX:HeapDumpOnCtrlBreak参数,可以使用[Ctrl]+[Break]键让虚拟机生成堆转储快照文件。此外,在Linux系统下,通过发送kill -3命令发送进程退出信号“恐吓”一下虚拟机,也能拿到堆转储快照。

jmap命令不仅能获取堆转储快照,还可以查询finalize执行队列、Java堆和方法区的详细信息,如空间使用率、当前使用到时哪种垃圾收集器等。在Windows下,仅-dump和-histo选项可以使用,其余的在Linux/Solaris平台下才有效。

jmap的命令格式:

jmap [option] vmid

option选项的合法值和含义如下:

-dump 生成Java堆转储快照。格式为-dump:[live,]format=b,file=<filename>,其中live子参数说明是否只dump出存活的对象

-finalizerinfo 显示在F-Queue中等待Finalizer线程执行finalize方法的对象。只在Linux/Solaris平台下有效。

-heap 显示Java堆详细信息,如使用哪种垃圾收集器、参数配置、分代状况等。只在Linux/Solaris平台下有效。

-histo 显示堆中对象统计信息,包括类、实例数量、合计容量。

-permstat 以ClassLoader为统计口径显示永久代内存状态。只在Linux/Solaris平台下有效。

-F 当虚拟机进程堆-dump选项没有响应时,可使用这个选项强制生成dump快照。只在Linux/Solaris平台下有效。

使用示例:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小诸葛的博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • jps(虚拟机进程状况工具)
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档