Java JDK 自带监控工具 jps.exe、jconsole.exe、jvisualvm.exe

迈不过友情╰ 2022-02-25 12:10 777阅读 0赞

目录

进程状态工具 jps.exe

操作演示

图形化监控工具 Jconsole

本地监控

性能监控工具 jvisualvm.exe


进程状态工具 jps.exe

1、jps(Java Virtual Machine Process Status Tool) 是 JDK 1.5 开始提供的一个显示当前所有 java 进程的命令行工具,简单实用,非常适合简单的察看当前 java 进程的一些简单情况。

2、一个 Java 程序占用一个 JVM(Java虚拟机),jps 命令可以列举当前所以的 Java 应用进程,jps.exe 工具是 jdk 自带的,在 %JAVA_HOME%/bin 目录下。

20190401213740186.png

3、Sun jps.exe 官网地址:https://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jps.html

4、配置了 Java JDK 环境变量后,则可以直接使用此命令,如下所示 :

  1. C:\Users\Administrator>jps -help
  2. usage(用法): jps [-help]
  3. jps [-q] [-mlvV] [<hostid>]
  4. Definitions(定义):
  5. <hostid>: <hostname>[:<port>]



























参数 描述
-q 仅输出 pid
-m 输出 main method 的参数 
-l 输出完全的包名,应用主类名,jar 的完全路径名 
-v 输出 jvm 参数 
-V 输出通过flag文件传递到JVM中的参数

操作演示

1、下面以安装配置好的 Java JDK 1.8 为例进行操作演示。

2、直接运行 jps 命令不加任何参数时,可以列出 Java 程序的进程 PID 以及 Main 函数名称:

  1. C:\Users\Administrator>jps
  2. 10912 Jps
  3. 10308 Bootstrap
  4. 11140 Launcher
  5. 10664 RemoteMavenServer
  6. 9784

显然 Jps.exe 本质也是 Java 程序,其中的 Bootstrap 是开启的 Tomcat 服务器。

  1. C:\Users\Administrator>jps -m
  2. 10308 Bootstrap start
  3. 11140 Launcher /D:/IntelliJ_IDEA_14.1.3/lib/javac2.jar;/D:/IntelliJ_IDEA_14.1.3/lib/jsr166e.jar;/D:/IntelliJ_IDEA_14.1.3/lib/jgoodies-forms.jar;D:/IntelliJ_IDEA_14.1.3/lib/picocontainer.jar;D:/IntelliJ_IDEA_14.1.3/lib/resources_en.jar;D:/IntelliJ_IDEA_14.1.3/lib/jna-utils.jar;/D:/IntelliJ_IDEA_14.1.3/lib/asm-all.jar;D:/IntelliJ_IDEA_14.1.3/lib/log4j.jar;D:/IntelliJ_IDEA_14.1.3/lib/trove4j.jar;D:/IntelliJ_IDEA_14.1.3/lib/oromatcher.jar;D:/IntelliJ_IDEA_14.1.3/lib/annotations.jar;D:/IntelliJ_IDEA_14.1.3/lib/jna.jar;D:/IntelliJ_IDEA_14.1.3/lib/util.jar;/D:/IntelliJ_IDEA_14.1.3/lib/nanoxml-2.2.3.jar;/D:/IntelliJ_IDEA_14.1.3/lib/netty-all-4.1.0.Beta4.jar;/D:/IntelliJ_IDEA_14.1.3/lib/jps-model.jar;/D:/IntelliJ_IDEA_14.1.3/lib/openapi.jar;/D:/IntelliJ_IDEA_14.1.3/lib/forms_rt.jar;D:/IntelliJ_IDEA_14.1.3/lib/jdom.jar;/D:/IntelliJ_IDEA_14.1.3/lib/jps-server.jar;/D:/IntelliJ_IDEA_14.1.3/lib/idea_rt.jar;/D:/IntelliJ_IDEA_14.1.3/lib/protobuf-2.5.0.jar;D:/IntelliJ_IDEA_14.1.3/lib/rt/jps-plugin-system.j
  4. 5396 Jps -m
  5. 10664 RemoteMavenServer
  6. 9784
  7. C:\Users\Administrator>jps -l
  8. 10308 org.apache.catalina.startup.Bootstrap
  9. 11140 org.jetbrains.jps.cmdline.Launcher
  10. 10664 org.jetbrains.idea.maven.server.RemoteMavenServer
  11. 9784
  12. 9816 sun.tools.jps.Jps

右上可知 Tomcat 服务器启动类的全称为 org.apache.catalina.startup.Bootstrap.

  1. C:\Users\Administrator>jps -v
  2. 10308 Bootstrap -Djava.util.logging.config.file=E:\apache-tomcat-8.0.23\conf\logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=E:\apache-tomcat-8.0.23\endorsed -Dcatalina.base=E:\apache-tomcat-8.0.23 -Dcatalina.home=E:\apache-tomcat-8.0.23 -Djava.io.tmpdir=E:\apache-tomcat-8.0.23\temp
  3. 11140 Launcher -Xmx700m -Djava.awt.headless=true -Djava.endorsed.dirs="" -Djdt.compiler.useSingleThread=true -Dpreload.project.path=E:/ideaProjects/HellordWorld -Dpreload.config.path=C:/Users/Administrator/.IntelliJIdea14/config/options -Dcompile.parallel=false -Drebuild.on.dependency.change=true -Djava.net.preferIPv4Stack=true -Dio.netty.initialSeedUniquifier=-7889843950249583200 -Dfile.encoding=GBK -Djps.file.types.component.name=FileTypeManager -Duser.language=zh -Duser.country=CN -Didea.paths.selector=IntelliJIdea14 -Didea.home.path=D:\IntelliJ_IDEA_14.1.3 -Didea.config.path=C:\Users\Administrator\.IntelliJIdea14\config -Didea.plugins.path=C:\Users\Administrator\.IntelliJIdea14\config\plugins -Djps.log.dir=C:/Users/Administrator/.IntelliJIdea14/system/log/build-log -Djava.io.tmpdir=C:/Users/Administrator/.IntelliJIdea14/system/compile-server/_temp_
  4. 10664 RemoteMavenServer -Djava.awt.headless=true -Didea.version==14.1.3 -Xmx512m -Dfile.encoding=GBK
  5. 5016 Jps -Denv.class.path=.;D:\Java\jdk1.8.0_101\lib;D:\Java\jdk1.8.0_101\lib\dt.jar;D:\Java\jdk1.8.0_101\lib\tools.jar -Dapplication.home=D:\Java\jdk1.8.0_101 -Xms8m
  6. 9784 -Xms128m -Xmx1000m -XX:MaxPermSize=250m -XX:ReservedCodeCacheSize=150m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -Djb.vmOptions=D:\IntelliJ_IDEA_14.1.3\bin\idea.exe.vmoptions -Xbootclasspath/a:D:\IntelliJ_IDEA_14.1.3\lib\boot.jar -Didea.paths.selector=IntelliJIdea14

上面 PID 为 9847 的进程经过任务管理器查看可知是 IDEA,显然 IDEA 作为一个 Java 程序,自己对 JVM 参数进行调整。

3、Jps 只能简单的查询 Java 应用进程,以及一些简单的参数,想要拥有更多功能,则不得不借助其它工具,其中 jvmstat 就是一个不错的选择。

图形化监控工具 Jconsole

1、JConsole(Java Monitoring and Management Console)Java 监控与管理控制台。是一个 Java JDK 内置的性能分析器,可以从命令行(直接输入jconsole)或在 GUI shell (%JAVA_HOME%/jdk/bin下打开)中运行。

2、JConsole 可对 JVM 中的内存,线程和类等进行监控,即可以监控本地的 jvm,也可以监控远程的 jvm,也可以同时监控多个jvm。

20190402092352656.png

本地监控

1、以监控本地 JVM 为例进行介绍,如下所示为 Java JDK 1.8 打开 JConsole 监控本地的 Java 应用。

20190402092934169.gif

20190402092941203.gif

2、连接成功后可以使用 JConsole 在右上角的绿色连接状态图标,断开或重新连接到正在运行的 Java 虚拟机。

概览

1、可以看到堆内存使用量、线程数量、类加载的数量、CPU 占用率,可以右击选择 “将数据另存为” 将数据保存到本地,格式为 .csv。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmdteDE5OTMzMjg_size_16_color_FFFFFF_t_70

内存

1、可以看到堆内存使用量,非堆内存使用量,内存池,老年代、伊甸园、幸存者区使用量。右上角 “执行GC” 按钮,可以单击执行垃圾收集。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmdteDE5OTMzMjg_size_16_color_FFFFFF_t_70 1

线程

1、可以看到线程的使用信息,如峰值线程数、当前活动线程数,当前所有线程的名称等

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmdteDE5OTMzMjg_size_16_color_FFFFFF_t_70 2

2、在 “Filter” 中可以输入字符进行过滤显示的线程。 点击一个线程列表中的名称,右侧会显示该线程的名称,状态、阻塞和等待的次数、堆栈跟踪等。

3、点击“检测死锁”按钮可以检查是否线程产生死锁。

1、可以看到加载 java 类的信息,如当前已加载的类的总数,已卸载类总数等。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmdteDE5OTMzMjg_size_16_color_FFFFFF_t_70 3

VM概要

1、JVM 摘要,可以看到整个虚拟机的详细信息

2019040210051738.gif

MBeans

1、Beans选项卡显示的信息平台MBean服务器中的一个通用的方法对所有已注册的MBean。 MBeans选项卡允许您访问平台MXBean。 此外,您还可以监控和管理您的应用程序的MBean。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmdteDE5OTMzMjg_size_16_color_FFFFFF_t_70 4

性能监控工具 jvisualvm.exe

1、VisualVM 是 JDK1.6 开始自带的一款全能型性能监控和故障分析工具。包括对 CPU 使用、JVM 堆内存消耗、线程、类加载的实时监控,内存 dump 文件分析,垃圾回收运行情况的可视化分析等,对故障排查和性能调优很有帮助。

2、VisualVM 与 JConsole 一样既可以监控本地 JVM ,也可以监控远程 JVM,但 visualVM 功能更强,可以相互结合使用。VisualVM 官网:https://visualvm.github.io/

3、windows 中安装 JDK 后,VisualVM 位于 %JAVA_HOME%/bin/ 下,配置好环境变量后,cmd 中直接执行 jvisualvm.exe 或者可以直接双击运行。

20190402201014721.gif

20190402201530181.gif20190402201643701.gif

20190402201815254.gif

“本地”列表下列出在本机运行的 Java 程序的资源占用情况,点击程序名打开相应的资源监控菜单,以图形的形式列出程序所占用的 CPU、Heap、PermGen、类、线程的 统计信息。基本与 JConsole.exe 也不差多。

发表评论

表情:
评论列表 (有 0 条评论,777人围观)

还没有评论,来说两句吧...

相关阅读