Java性能分析中常用的命令和工具

命令 功能
jps 用于查看正在运行的Java进程的状态信息
jinfo 用于查看和修改正在运行的 Java 进程的 Java 虚拟机(JVM)参数和系统属性。
jstack 用于生成 Java 进程的线程转储信息
jmap 用于生成 Java 进程的内存映射信息
jconsole 是 Java 自带的监控和管理控制台,它提供了一个图形化界面,允许您监视和管理正在运行的 Java 应用程序的性能和资源使用情况
jvisualvm 是一款功能强大的多合一故障诊断和性能监控的图形化工具

jps

jps (JVM Process Status Tool)命令用于查看正在运行的 Java 进程的状态信息,包括进程 ID 和主类名。

  1. 查看所有 Java 进程的进程 ID 和主类名:
    Java性能分析中常用的命令和工具_第1张图片

  2. 只输出 Java 进程的进程 ID:(-q:只输出进程ID,不包括类名和JAR文件名。)
    Java性能分析中常用的命令和工具_第2张图片

  3. 输出 Java 进程的进程 ID 和传递给 main 方法的参数:(-m:输出传递给 main 方法的参数。)
    Java性能分析中常用的命令和工具_第3张图片

  4. 输出 Java 进程的进程 ID 和主类全名:(-l:输出主类全名,或者对于JAR文件,输出JAR文件路径)
    Java性能分析中常用的命令和工具_第4张图片

jinfo

用于查看和修改正在运行的 Java 进程的 Java 虚拟机(JVM)参数和系统属性。

  1. 查看标志参数(-flags:打印指定 JVM 的参数值)
$ jinfo -flags 12345
Attaching to process ID 12345, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 11.0.12+7
Non-default VM flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=268435456 -XX:MaxHeapSize=4294967296 -XX:MaxNewSize=1431306240 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=89128960 -XX:OldSize=179306496 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseParallelGC
Command line:  -XX:InitialHeapSize=268435456 -XX:MaxHeapSize=4294967296 -XX:MaxNewSize=1431306240 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=89128960 -XX:OldSize=179306496 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseParallelGC

VM Flags:
-XX:CICompilerCount=3
-XX:InitialHeapSize=268435456
-XX:MaxHeapSize=4294967296
-XX:MaxNewSize=1431306240
-XX:MinHeapDeltaBytes=524288
-XX:NewSize=89128960
-XX:OldSize=179306496
-XX:+UseCompressedClassPointers
-XX:+UseCompressedOops
-XX:+UseFastUnorderedTimeStamps
-XX:+UseParallelGC
  1. 查看系统属性(-sysprops:打印Java虚拟机的系统属性)
$ jinfo -sysprops 12345
Attaching to process ID 12345, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 11.0.12+7
Non-default VM flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=268435456 -XX:MaxHeapSize=4294967296 -XX:MaxNewSize=1431306240 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=89128960 -XX:OldSize=179306496 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseParallelGC
Command line:  -XX:InitialHeapSize=268435456 -XX:MaxHeapSize=4294967296 -XX:MaxNewSize=1431306240 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=89128960 -XX:OldSize=179306496 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseParallelGC

Property settings:
    awt.toolkit = sun.awt.windows.WToolkit
    java.class.path = /path/to/your/application.jar
    ...
  1. 查看特定标志参数的值(-flag name:打印指定名称的标志参数的值。)
$ jinfo -flag UseG1GC 12345
Attaching to process ID 12345, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 11.0.12+7
Non-default VM flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=268435456 -XX:MaxHeapSize=4294967296 -XX:MaxNewSize=1431306240 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=89128960 -XX:OldSize=179306496 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseParallelGC
Command line:  -XX:InitialHeapSize=268435456 -XX:MaxHeapSize=4294967296 -XX:MaxNewSize=1431306240 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=89128960 -XX:OldSize=179306496 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseParallelGC

UseG1GC=true
  1. 修改特定标志参数的值(-flag [+|-]name:打印或设置指定名称的布尔标志参数的值)
    Java性能分析中常用的命令和工具_第5张图片

jstack

Java性能分析中常用的命令和工具_第6张图片

jstack(Java Stack Trace)命令用于生成 Java 进程的线程转储信息。它可以显示每个线程的堆栈跟踪,帮助您找出可能的死锁、死循环和线程问题。
Java性能分析中常用的命令和工具_第7张图片
Java性能分析中常用的命令和工具_第8张图片

jmap

Java性能分析中常用的命令和工具_第9张图片

jmap(Java Memory Map)命令用于生成 Java 进程的内存映射信息。它提供了堆的详细信息,包括 Java 堆内存、对象统计和内存使用情况的详细信息,可以帮助开发人员分析内存泄漏、内存使用情况等问题。
Java性能分析中常用的命令和工具_第10张图片
Java性能分析中常用的命令和工具_第11张图片

jconsole

jconsole(Java Monitoring and Management Console)是 Java 自带的监控和管理控制台,它提供了一个图形化界面,允许您监视和管理正在运行的 Java 应用程序的性能和资源使用情况。jconsole 是一个非常有用的工具,可以帮助开发人员识别问题、进行性能调优和监控Java应用程序。

主要功能:
Java性能分析中常用的命令和工具_第12张图片

①、启动Java应用程序

public class MyApp {
    public static void main(String[] args) {
        while (true) {
            System.out.println("Running...");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

②、打开终端,执行jconsole

③、在 jconsole 界面中,您可以看到一个列表,显示了正在运行的 Java 进程。选择您的应用程序进程并点击“连接”
Java性能分析中常用的命令和工具_第13张图片
④、在 jconsole 的不同选项卡中,您可以查看内存使用情况、线程状态、垃圾回收信息等。例如,您可以在“内存”选项卡中查看堆内存使用情况
Java性能分析中常用的命令和工具_第14张图片

⑤、在“线程”选项卡中,您可以查看每个线程的状态、堆栈跟踪等信息,以帮助您识别潜在的线程问题
Java性能分析中常用的命令和工具_第15张图片
jconsole 是一个强大的 Java 性能监控和管理工具,提供了丰富的功能来监视和分析应用程序的性能和资源使用情况。通过 jconsole,开发人员可以轻松地识别问题、分析性能瓶颈,以及进行调优,从而提升Java应用程序的性能和效率

VisualVM

Java VisualVM(Java Visual Monitoring and Troubleshooting Tool)是一款功能强大的多合一故障诊断和性能监控的图形化工具,它集成了多种性能统计工具的功能,使用它可以代替 jmap、jstack 甚至 jconsole
它是 Java 开发工具包(JDK)的一部分,可以帮助您实时监控应用程序的各种指标,如内存使用、线程情况、垃圾回收等,以便发现和解决性能问题。

主要功能:
Java性能分析中常用的命令和工具_第16张图片

  1. 启动 Java VisualVM: 您可以在JDK的 bin 目录中找到jvisualvm.exe(Windows)或 jvisualvm(Linux/macOS)并运行它。
    Java性能分析中常用的命令和工具_第17张图片

  2. 连接到应用程序: 在 Java VisualVM 中,点击的“远程”按钮,然后在“远程”面板中添加要连接的远程或本地Java进程。

  3. 监控性能: 连接到应用程序后,您可以查看实时性能监控信息,包括内存、线程、CPU使用等。您还可以选择不同的监视选项,如“监视”、“内存”、“线程”等标签。
    Java性能分析中常用的命令和工具_第18张图片

  4. 进行内存分析: 在“抽样器”标签中,您可以生成并分析堆转储,查看对象引用关系、占用内存的对象等
    Java性能分析中常用的命令和工具_第19张图片

  5. 线程分析和垃圾回收分析: 在“线程”和“监视”标签中,您可以监控线程状态、识别死锁,以及查看垃圾回收行为
    Java性能分析中常用的命令和工具_第20张图片
    总之,Java VisualVM 是一个强大的性能分析工具,可以帮助您监控、分析和优化Java应用程序的性能。通过实时监控、内存分析、线程分析等功能,您可以更深入地了解应用程序的运行情况,并解决性能问题。

你可能感兴趣的:(java,开发语言,常用的命令和工具)