首页 > 其他分享 >JDK 常用命令行工具使用指南

JDK 常用命令行工具使用指南

时间:2024-05-29 11:48:02浏览次数:27  
标签:KB 容量 JDK 1.3 VM GC 常用命令 使用指南 optional

1. JDK 常用命令行工具使用指南

1.1. jstat

jstat 是一个命令行工具,它随 Java Development Kit (JDK) 一起提供,用于监控和统计 Java 虚拟机 (JVM) 的性能信息。jstat 可以报告各种运行时信息,包括堆内存使用情况、垃圾回收活动、类加载信息等。这个工具对于分析和调优 Java 应用程序的性能非常有用。

命令格式:

jstat -help|-options
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

参数选项:

  • -help:显示帮助信息。
  • -options:显示 outputOptions 参数的列表。
  • -<option>:输出选项,指定显示某一种 Java 虚拟机信息。
  • -t:把时间戳列显示为输出的第一列。这个时间戳是从 Java 虚拟机的开始运行到现在的秒数。
  • -h<lines>:每显示 n 行显示一次表头,其中 n 为正整数。默认值为 0,即仅在第一行数据显示一次表头。
  • vmid:虚拟机唯一 ID(LVMID,Local Virtual Machine Identifier),如果查看本机就是 Java 进程的进程 ID。
  • interval:显示信息的时间间隔,单位默认毫秒。也可以指定秒为单位,比如:1s。如果指定了该参数,jstat 命令将每个这段时间显示一次统计信息。
  • count:显示数据的次数,默认值是无穷大,这将导致 jstat 命令一直显示统计信息,直到目标 JVM 终止或 jstat 命令终止。

1.1.1. 输出选项:

  • -class:显示类加载、卸载数量、总空间和装载耗时的统计信息。
  • -compiler:显示即时编译的方法、耗时等信息。
  • -gc:显示堆各个区域内存使用和垃圾回收的统计信息。
  • -gccapacity:显示堆各个区域的容量及其对应的空间的统计信息。
  • -gcutil:显示有关垃圾收集统计信息的摘要。
  • -gccause:显示关于垃圾收集统计信息的摘要 (与-gcutil 相同),以及最近和当前垃圾回收的原因。
  • -gcnew:显示新生代的垃圾回收统计信息。
  • -gcnewcapacity:显示新生代的大小及其对应的空间的统计信息。
  • -gcold: 显示老年代和元空间的垃圾回收统计信息。
  • -gcoldcapacity:显示老年代的大小统计信息。
  • -gcmetacapacity:显示元空间的大小的统计信息。
  • -printcompilation:显示即时编译方法的统计信息。

1.1.1.1. -class

显示类加载、卸载数量、总空间和装载耗时的统计信息。

jstat -class 29710
Loaded  Bytes  Unloaded  Bytes     Time   
 23968 45189.2        0     0.0       5.58

表头定义:

  • Loaded:加载的类的数量。
  • Bytes:加载的类所占用的字节数。
  • Unloaded:卸载的类的数量。
  • Bytes:卸载的类所占用的字节数。
  • Time:执行类加载和卸载操作所花费的时间。

1.1.1.2. -compiler

显示即时编译的方法、耗时等信息。

jstat -compiler 29710
Compiled Failed Invalid   Time   FailedType FailedMethod
   16546      7       0     4.26          1 com/zaxxer/hikari/util/ConcurrentBag borrow

表头定义:

  • Compiled:执行的编译任务的数量。
  • Failed:执行编译任务失败的数量。
  • Invalid:执行编译任务失效的数量。
  • Time:执行编译任务所花费的时间。
  • FailedType:上次编译失败的编译类型。
  • FailedMethod:上次编译失败的类名和方法。

1.1.1.3. -gc

显示堆各个区域内存使用和垃圾回收的统计信息。

jstat -gc 29710      
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
 0.0   63488.0  0.0   63488.0 1918976.0 235520.0 1163264.0   69120.0   137856.0 128097.7 18048.0 16346.8     10    0.322   0      0.000    0.322

表头定义:

  • S0C:年轻代中第一个 Survivor 区的容量,单位为 KB。
  • S1C:年轻代中第二个 Survivor 区的容量,单位为 KB。
  • S0U:年轻代中第一个 Survivor 区已使用大小,单位为 KB。
  • S1U:年轻代中第二个 Survivor 区已使用大小,单位为 KB。
  • EC:年轻代中 Eden 区的容量,单位为 KB。
  • EU:年轻代中 Eden 区已使用大小,单位为 KB。
  • OC:老年代的容量,单位为 KB。
  • OU:老年代已使用大小,单位为 KB。
  • MC:元空间的容量,单位为 KB。
  • MU:元空间已使用大小,单位为 KB。
  • CCSC:压缩类的容量,单位为 KB。
  • CCSU:压缩类已使用大小,单位为 KB。
  • YGC:Young GC 的次数。
  • YGCT:Young GC 所用的时间。
  • FGC:Full GC 的次数。
  • FGCT:Full GC 的所用的时间。
  • GCT:GC 的所用的总时间。

1.1.1.4. -gccapacity

显示堆各个区域的容量及其对应的空间的统计信息。

jstat -gccapacity 29710
 NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC       MCMN     MCMX      MC     CCSMN    CCSMX     CCSC    YGC    FGC 
     0.0 3145728.0 1982464.0    0.0 63488.0 1918976.0        0.0  3145728.0  1163264.0  1163264.0      0.0 1169408.0 137856.0      0.0 1048576.0  18048.0     10     0

表头定义:

  • NGCMN:年轻代最小的容量,单位为 KB。
  • NGCMX:年轻代最大的容量,单位为 KB。
  • NGC:当前年轻代的容量,单位为 KB。
  • S0C:年轻代中第一个 Survivor 区的容量,单位为 KB。
  • S1C:年轻代中第二个 Survivor 区的容量,单位为 KB。
  • EC:年轻代中 Eden 区的容量,单位为 KB。
  • OGCMN:老年代最小的容量,单位为 KB。
  • OGCMX:老年代最大的容量,单位为 KB。
  • OGC:当前老年代的容量,单位为 KB。
  • OC:当前老年代的容量,单位为 KB。
  • MCMN:元空间最小的容量,单位为 KB。
  • MCMX:元空间最大的容量,单位为 KB。
  • MC:当前元空间的容量,单位为 KB。
  • CCSMN:压缩类最小的容量,单位为 KB。
  • CCSMX:压缩类最大的容量,单位为 KB。
  • CCSC:当前压缩类的容量,单位为 KB。
  • YGC:Young GC 的次数。
  • FGC:Full GC 的次数。

1.1.1.5. -gcutil

显示有关垃圾收集统计信息的摘要。

jstat -gcutil 29710    
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
  0.00 100.00  21.08   5.94  92.92  90.57     10    0.322     0    0.000    0.322

表头定义:

  • S0:年轻代中第一个 Survivor 区使用大小占当前容量的百分比。
  • S1:年轻代中第二个 Survivor 区使用大小占当前容量的百分比。
  • E:Eden 区使用大小占当前容量的百分比。
  • O:老年代使用大小占当前容量的百分比。
  • M:元空间使用大小占当前容量的百分比。
  • CCS:压缩类使用大小占当前容量的百分比。
  • YGC:Young GC 的次数。
  • YGCT:Young GC 所用的时间。
  • FGC:Full GC 的次数。
  • FGCT:Full GC 的所用的时间。
  • GCT:GC 的所用的总时间。

1.1.1.6. -gccause

显示关于垃圾收集统计信息的摘要 (与-gcutil 相同),以及最近和当前垃圾回收的原因。

jstat -gccause 29710
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC                 
  0.00 100.00  23.37   5.94  92.92  90.57     10    0.322     0    0.000    0.322 G1 Evacuation Pause  No GC

表头定义:

  • S0:年轻代中第一个 Survivor 区使用大小占当前容量的百分比。
  • S1:年轻代中第二个 Survivor 区使用大小占当前容量的百分比。
  • E:Eden 区使用大小占当前容量的百分比。
  • O:老年代使用大小占当前容量的百分比。
  • M:元空间使用大小占当前容量的百分比。
  • CCS:压缩类使用大小占当前容量的百分比。
  • YGC:Young GC 的次数。
  • YGCT:Young GC 所用的时间。
  • FGC:Full GC 的次数。
  • FGCT:Full GC 的所用的时间。
  • GCT:GC 的所用的总时间。
  • LGCC:上次垃圾回收的原因。
  • GCC:当前垃圾回收的原因。

1.1.1.7. -gcnew

显示新生代的垃圾回收统计信息。

jstat -gcnew 29710  
 S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC     YGCT  
   0.0 63488.0    0.0 63488.0 15  15 118272.0 1918976.0 493568.0     10    0.322

表头定义:

  • S0C:年轻代中第一个 Survivor 区的容量,单位为 KB。
  • S1C:年轻代中第二个 Survivor 区的容量,单位为 KB。
  • S0U:年轻代中第一个 Survivor 区已使用大小,单位为 KB。
  • S1U:年轻代中第二个 Survivor 区已使用大小,单位为 KB。
  • TT:对象在年轻代存活的次数。
  • MTT:对象在年轻代存活的最大次数
  • DSS:期望的 Survivor 区大小,单位为 KB。
  • EC:年轻代中 Eden 区的容量,单位为 KB。
  • EU:年轻代中 Eden 区已使用大小,单位为 KB。
  • YGC:Young GC 的次数。
  • YGCT:Young GC 所用的时间。

1.1.1.8. -gcnewcapacity

显示新生代的大小及其对应的空间的统计信息。

jstat -gcnewcapacity 29710
  NGCMN      NGCMX       NGC      S0CMX     S0C     S1CMX     S1C       ECMX        EC      YGC   FGC 
       0.0  3145728.0  1982464.0      0.0      0.0 3145728.0  63488.0  3145728.0  1918976.0    10     0

表头定义:

  • NGCMN:年轻代最小的容量,单位为 KB。
  • NGCMX:年轻代最大的容量,单位为 KB。
  • NGC:当前年轻代的容量,单位为 KB。
  • S0CMX:年轻代中第一个 Survivor 区最大的容量,单位为 KB。
  • S0C:年轻代中第一个 Survivor 区的容量,单位为 KB。
  • S1CMX:年轻代中第二个 Survivor 区最大的容量,单位为 KB。
  • S1C:年轻代中第二个 Survivor 区的容量,单位为 KB。
  • ECMX:年轻代中 Eden 区最大的容量,单位为 KB。
  • EC:年轻代中 Eden 区的容量,单位为 KB。
  • YGC:Young GC 的次数。
  • FGC:Full GC 的次数。

1.1.1.9. -gcold

显示老年代和元空间的垃圾回收统计信息。

jstat -gcold 29710        
   MC       MU      CCSC     CCSU       OC          OU       YGC    FGC    FGCT     GCT   
137856.0 128097.7  18048.0  16346.8   1163264.0     69120.0     10     0    0.000    0.322

表头定义:

  • MC:元空间的容量,单位为 KB。
  • MU:元空间已使用大小,单位为 KB。
  • CCSC:压缩类的容量,单位为 KB。
  • CCSU:压缩类已使用大小,单位为 KB。
  • OC:老年代的容量,单位为 KB。
  • OU:老年代已使用大小,单位为 KB。
  • YGC:Young GC 的次数。
  • FGC:Full GC 的次数。
  • FGCT:Full GC 的所用的时间。
  • GCT:GC 的所用的总时间。

1.1.1.10. -gcoldcapacity

显示老年代的大小统计信息。

jstat -gcoldcapacity 29710
   OGCMN       OGCMX        OGC         OC       YGC   FGC    FGCT     GCT   
        0.0   3145728.0   1163264.0   1163264.0    12     0    0.000    0.465

表头定义:

  • OGCMN:老年代最小的容量,单位为 KB。
  • OGCMX:老年代最大的容量,单位为 KB。
  • OGC:当前老年代的容量,单位为 KB。
  • OC:当前老年代的容量,单位为 KB。
  • YGC:Young GC 的次数。
  • FGC:Full GC 的次数。
  • FGCT:Full GC 的所用的时间。
  • GCT:GC 的所用的总时间。

1.1.1.11. -gcmetacapacity

显示元空间的大小的统计信息。

jstat -gcmetacapacity 29710
   MCMN       MCMX        MC       CCSMN      CCSMX       CCSC     YGC   FGC    FGCT     GCT   
       0.0  1169408.0   138368.0        0.0  1048576.0    18048.0    15     0    0.000    0.581

表头定义:

  • MCMN:元空间最小的容量,单位为 KB。
  • MCMX:元空间最大的容量,单位为 KB。
  • MC:当前元空间的容量,单位为 KB。
  • CCSMN:压缩类最小的容量,单位为 KB。
  • CCSMX:压缩类最大的容量,单位为 KB。
  • YGC:Young GC 的次数。
  • FGC:Full GC 的次数。
  • FGCT:Full GC 的所用的时间。
  • GCT:GC 的所用的总时间。

1.1.1.12. -printcompilation

显示即时编译方法的统计信息。

jstat -printcompilation 29710
Compiled  Size  Type Method
   16895    805    1 org/quartz/simpl/SimpleThreadPool$WorkerThread run

表头定义:

  • Compiled:最近编译方法执行的编译任务的数量。
  • Size:最近编译方法的字节码的字节数。
  • Type:最近编译方法的编译类型。
  • Method:最近编译方法的类名和方法名。

1.2. jps

jps 是用于查看有权访问的 hotspot 虚拟机的进程。当未指定 hostid 时,默认查看本机 jvm 进程,否者查看指定的 hostid 机器上的 jvm 进程,此时 hostid 所指机器必须开启 jstatd 服务。jps 可以列出 jvm 进程 lvmid,主类类名,main 函数参数,jvm 参数,jar 名称等信息。

命令格式:

jps [-q] [-mlvV] [<hostid>]

参数选项:

  • 无参数:默认列出本地主机上所有 Java 进程的本地虚拟机标识符(LVMID)和启动类的名称
  • -q:仅输出进程的 LVMID,不包括类名、JAR 文件名或传递给 main 方法的参数
  • -m:输出传递给 main 方法的参数。
  • -l:输出应用程序主类的完整包名或者是 JAR 文件的完整名称
  • -v:输出传递给 Java 虚拟机的参数,例如堆大小等
  • -V:输出通过 .hotspotrc 文件或 -XX:Flags= 指定的 JVM 参数
  • hostid:指定特定主机,可以是 IP 地址和域名,也可以指定具体协议和端口。

1.3. jcmd

jcmd 是 Java 开发工具包(JDK)中的一个命令行实用程序,用于向运行中的 Java 虚拟机(JVM)发送诊断命令。自 JDK 7 开始引入,jcmd 逐渐取代了之前的一些分散的诊断工具,如 jps、jstack、jmap 和 jinfo 等,并随着 JDK 版本的更新而不断增加新的诊断功能。

命令格式:

jcmd <pid | main class> <command ...|PerfCounter.print|-f file>
jcmd -l                                                    
jcmd -h

参数选项:

  • pid:指定要发送命令的 Java 进程的进程标识符。0 表示所有进程。
  • main class:指定要发送命令的主类名称。
  • command:指定要对指定的 Java 进程执行的诊断命令。
  • PerfCounter.print:打印 JVM 性能相关的计数器信息。
  • -f file:从文件中读取命令并执行。
  • -l:列出本机上所有的 Java 进程。
  • -h:显示 jcmd 的帮助信息

1.3.1. command 命令

1.3.1.1. VM.unlock_commercial_features

用于解锁 Java 虚拟机(JVM)中的商业特性的命令。这项功能允许用户启用那些在默认情况下被标记为商业特性的 JVM 功能,例如 Java Flight Recorder (JFR)。JFR 是一个强大的、内置的性能监控和分析工具,它允许开发者和性能工程师收集有关 Java 应用程序运行时行为的详细信息。

jcmd 28126 VM.unlock_commercial_features
28126:
Command executed successfully

1.3.1.2. JFR.configure

Configure JFR

Syntax :

JFR.configure [options]

Options: (options must be specified using the or = syntax)

  • repositorypath : [optional] Path to repository,.e.g "My Repository" (STRING, no default value)
  • dumppath : [optional] Path to dump,.e.g "My Dump path" (STRING, no default value)
  • stackdepth : [optional] Stack Depth (JULONG, 64)
  • globalbuffercount : [optional] Number of global buffers, (JULONG, 20)
  • globalbuffersize : [optional] Size of a global buffers, (MEMORY SIZE, 512k)
  • thread_buffer_size : [optional] Size of a thread buffer (MEMORY SIZE, 8k)
  • memorysize : [optional] Overall memory size, (MEMORY SIZE, 10m)
  • maxchunksize : [optional] Size of an individual disk chunk (MEMORY SIZE, 12m)
  • samplethreads : [optional] Activate Thread sampling (BOOLEAN, true)

1.3.1.3. JFR.dump

Copies contents of a JFR recording to file. Either the name or the recording id must be specified.

Syntax :

JFR.dump [options]

Options: (options must be specified using the or = syntax)

  • name : [optional] Recording name, e.g. "My Recording" (STRING, no default value)
  • filename : [optional] Copy recording data to file, e.g. "/home/user/My Recording.jfr" (STRING, no default value)
  • maxage : [optional] Maximum duration to dump, in (s)econds, (m)inutes, (h)ours, or (d)ays, e.g. 60m, or 0 for no limit (NANOTIME, 0)
  • maxsize : [optional] Maximum amount of bytes to dump, in (M)B or (G)B, e.g. 500M, or 0 for no limit (MEMORY SIZE, 0)
  • begin : [optional] Point in time to dump data from, e.g. 09:00, 21:35:00, 2018-06-03T18:12:56.827Z, 2018-06-03T20:13:46.832, -10m, -3h, or -1d (STRING, no default value)
  • end : [optional] Point in time to dump data to, e.g. 09:00, 21:35:00, 2018-06-03T18:12:56.827Z, 2018-06-03T20:13:46.832, -10m, -3h, or -1d (STRING, no default value)
  • path-to-gc-roots : [optional] Collect path to GC roots (BOOLEAN, false)

1.3.1.4. JFR.check

Checks running JFR recording(s)

Syntax :

JFR.check [options]

Options: (options must be specified using the or = syntax)

  • name : [optional] Recording name, e.g. "My Recording" or omit to see all recordings (STRING, no default value)
  • verbose : [optional] Print event settings for the recording(s) (BOOLEAN, false)

1.3.1.5. JFR.start

Starts a new JFR recording

Syntax :

JFR.start [options]

Options: (options must be specified using the or = syntax)

  • name : [optional] Name that can be used to identify recording, e.g. "My Recording" (STRING, no default value)
  • settings : [optional] Settings file(s), e.g. profile or default. See JRE_HOME/lib/jfr (STRING SET, no default value)
  • delay : [optional] Delay recording start with (s)econds, (m)inutes), (h)ours), or (d)ays, e.g. 5h. (NANOTIME, 0)
  • duration : [optional] Duration of recording in (s)econds, (m)inutes, (h)ours, or (d)ays, e.g. 300s. (NANOTIME, 0)
  • disk : [optional] Recording should be persisted to disk (BOOLEAN, no default value)
  • filename : [optional] Resulting recording filename, e.g. "/home/user/My Recording.jfr" (STRING, no default value)
  • maxage : [optional] Maximum time to keep recorded data (on disk) in (s)econds, (m)inutes, (h)ours, or (d)ays, e.g. 60m, or 0 for no limit (NANOTIME, 0)
  • maxsize : [optional] Maximum amount of bytes to keep (on disk) in (k)B, (M)B or (G)B, e.g. 500M, or 0 for no limit (MEMORY SIZE, 0)
  • dumponexit : [optional] Dump running recording when JVM shuts down (BOOLEAN, no default value)
  • path-to-gc-roots : [optional] Collect path to GC roots (BOOLEAN, false)

1.3.1.6. JFR.stop

Stops a JFR recording

Syntax :

JFR.stop [options]

Options: (options must be specified using the or = syntax)

  • name : Recording text,.e.g "My Recording" (STRING, no default value)
  • filename : [optional] Copy recording data to file, e.g. "/home/user/My Recording.jfr" (STRING, no default value)

1.3.1.7. Thread.print

Print all threads with stacktraces.

Syntax :

Thread.print [options]

Options: (options must be specified using the or = syntax)

  • -l : [optional] print java.util.concurrent locks (BOOLEAN, false)

1.3.1.8. VM.native_memory

Print native memory usage
用于获取有关 JVM 本地(即非堆)内存使用情况的详细信息。分析堆外内存泄露。
启动程序时必须开启 Native Memory Tracking (NMT) 特性:-XX:NativeMemoryTracking=summary-XX:NativeMemoryTracking=detail

Syntax :

VM.native_memory [options]

Options: (options must be specified using the or = syntax)

  • summary : [optional] request runtime to report current memory summary, which includes total reserved and committed memory, along with memory usage summary by each subsytem. (BOOLEAN, false)
  • detail : [optional] request runtime to report memory allocation >= 1K by each callsite. (BOOLEAN, false)
  • baseline : [optional] request runtime to baseline current memory usage, so it can be compared against in later time. (BOOLEAN, false)
  • summary.diff : [optional] request runtime to report memory summary comparison against previous baseline. (BOOLEAN, false)
  • detail.diff : [optional] request runtime to report memory detail comparison against previous baseline, which shows the memory allocation activities at different callsites. (BOOLEAN, false)
  • shutdown : [optional] request runtime to shutdown itself and free the memory used by runtime. (BOOLEAN, false)
  • statistics : [optional] print tracker statistics for tuning purpose. (BOOLEAN, false)
  • scale : [optional] Memory usage in which scale, KB, MB or GB (STRING, KB)

1.3.1.9. VM.classloader_stats

Print statistics about all ClassLoaders.

Syntax:

VM.classloader_stats

1.3.1.10. VM.uptime

Print VM uptime.

Syntax:

VM.uptime [options]

Options: (options must be specified using the or = syntax)

  • -date : [optional] Add a prefix with current date (BOOLEAN, false)

1.3.1.11. VM.dynlibs

列出 JVM 进程当前加载的所有动态链接库(Dynamic Libraries)的信息。

Syntax:

VM.dynlibs

1.3.1.12. VM.flags

输出当前运行的 JVM 实例的所有启动参数。加上-all=true参数输出所有支持的 JVM 参数

Syntax:

VM.flags [options]

Options: (options must be specified using the or = syntax)

  • -all : [optional] Print all flags supported by the VM (BOOLEAN, false)

1.3.1.13. VM.system_properties

Print system properties.

Syntax:

VM.system_properties

1.3.1.14. VM.command_line

Print the command line used to start this VM instance.

Syntax:

VM.command_line

1.3.1.15. VM.version

Print JVM version information.

Syntax:

VM.version

1.3.1.16. GC.rotate_log

Force the GC log file to be rotated.
将当前的垃圾收集(Garbage Collection,GC)日志文件进行轮换。轮换后的日志文件可以用于分析,而不会干扰正在运行的 JVM。
执行这个命令后,当前的 GC 日志文件会被关闭,并且创建一个新的日志文件,新的日志文件会继承当前日志文件的名称,并且追加一个时间戳,以区分不同的日志文件。

Syntax:

GC.rotate_log

1.3.1.17. GC.class_stats

Provide statistics about Java class meta data. Requires -XX:+UnlockDiagnosticVMOptions.

Syntax :

GC.class_stats [options] [<columns>]

Arguments:

  • columns : [optional] Comma-separated list of all the columns to show. If not specified, the following columns are shown: InstBytes,KlassBytes,CpAll,annotations,MethodCount,Bytecodes,MethodAll,ROAll,RWAll,Total (STRING, no default value)

Options: (options must be specified using the or = syntax)

  • -all : [optional] Show all columns (BOOLEAN, false)
  • -csv : [optional] Print in CSV (comma-separated values) format for spreadsheets (BOOLEAN, false)
  • -help : [optional] Show meaning of all the columns (BOOLEAN, false)

1.3.1.18. GC.class_histogram

Provide statistics about the Java heap usage.

Syntax:

GC.class_histogram [options]

Options: (options must be specified using the or = syntax)

  • -all : [optional] Inspect all objects, including unreachable objects (BOOLEAN, false)

1.3.1.19. GC.heap_dump

Generate a HPROF format dump of the Java heap.

Syntax:

GC.heap_dump [options] <filename>

Arguments:

  • filename : Name of the dump file (STRING, no default value)

Options: (options must be specified using the or = syntax)

  • -all : [optional] Dump all objects, including unreachable objects (BOOLEAN, false)

1.3.1.20. GC.finalizer_info

Provide information about Java finalization queue.
命令用于获取有关对象终结器(finalizer)的信息。终结器是 Java 中的一个特性,允许对象在垃圾收集器回收之前执行一些清理工作。这个命令会列出所有等待终结的对象数量,以及一些与终结队列相关的状态信息。

Syntax:

GC.finalizer_info

1.3.1.21. GC.heap_info

Provide generic Java heap information.

Syntax:

GC.heap_info

1.3.1.22. GC.run_finalization

Call java.lang.System.runFinalization().

Syntax:

GC.run_finalization

1.3.1.23. GC.run

Call java.lang.System.gc().

Syntax:

GC.run

1.4. jinfo

jinfo(JVM Information)是 Java 虚拟机(JVM)提供的一个命令行工具,它用于显示当前 Java 虚拟机的配置信息,包括系统属性和 JVM 命令行参数。

命令格式:

jinfo [option] <pid>
    (to connect to running process)

jinfo [option] <executable <core>
    (to connect to a core file)

jinfo [option] [server_id@]<remote server IP or hostname>
    (to connect to remote debug server)

参数选项:

  • -flag <name>:to print the value of the named VM flag
  • -flag [+|-]<name>:to enable or disable the named VM flag
  • -flag <name>=<value>:to set the named VM flag to the given value
  • -flags:to print VM flags
  • -sysprops:to print Java system properties
  • <no option>:to print both of the above
  • -h | -help:to print this help message

1.5. jstack

jstack 是一个用于生成 Java 虚拟机(JVM)当前时刻的线程快照的命令行工具。它是 JDK 自带的一系列监控和管理工具中的一个,主要用于线程分析和故障排除。

命令格式:

jstack [-l] <pid>
    (to connect to running process)

jstack -F [-m] [-l] <pid>
    (to connect to a hung process)

jstack [-m] [-l] <executable> <core>
    (to connect to a core file)

jstack [-m] [-l] [server_id@]<remote server IP or hostname>
    (to connect to a remote debug server)

参数选项:

  • -F:to force a thread dump. Use when jstack does not respond (process is hung)
  • -m:to print both java and native frames (mixed mode)
  • -l:long listing. Prints additional information about locks
  • -h:or -help to print this help message

1.6. jmap

jmap(JVM Memory Map)是一个用于生成 Java 虚拟机(JVM)堆内存快照的命令行工具,它也是 JDK 自带的一系列监控和管理工具之一。这个工具对于分析内存使用情况和诊断内存泄漏等问题非常有用。

命令格式:

jmap [option] <pid>
    (to connect to running process)

jmap [option] <executable <core>
    (to connect to a core file)

jmap [option] [server_id@]<remote server IP or hostname>
    (to connect to remote debug server)

参数选项:

  • <none>:to print same info as Solaris pmap
  • -heap: to print java heap summary
  • -histo[:live]: to print histogram of java object heap; if the "live"suboption is specified, only count live objects
  • -clstats: to print class loader statistics
  • -finalizerinfo: to print information on objects awaiting finalization
  • -dump:<dump-options>: to dump java heap in hprof binary format
    dump-options:
    • live: dump only live objects; if not specified, all objects in the heap are dumped.
    • format=b: binary format
    • file=<file>: dump heap to . Example: jmap -dump:live,format=b,file=heap.bin
  • -F: force. Use with -dump: or -histo to force a heap dump or histogram when does not respond. The "live" suboption is not supported in this mode.
  • -h | -help: to print this help message
  • -J<flag>: to pass directly to the runtime system

1.7. jhat

jhat(JVM Heap Analysis Tool)是与 JDK 一起提供的命令行工具,用于分析 Java 虚拟机(JVM)的堆转储文件(heap dump)。jhat 可以生成一个简单的 web 服务器,让开发者可以通过浏览器查看堆转储的分析结果,包括对象的统计信息、类实例的分布、潜在的内存泄漏等。

命令格式:

jhat [-stack <bool>] [-refs <bool>] [-port <port>] [-baseline <file>] [-debug <int>] [-version] [-h|-help] <file>

参数选项:

  • -J<flag>: Pass directly to the runtime system. For example, -J-mx512m to use a maximum heap size of 512MB
  • -stack false: Turn off tracking object allocation call stack.
  • -refs false: Turn off tracking of references to objects
  • -port <port>: Set the port for the HTTP server. Defaults to 7000
  • -exclude <file>: Specify a file that lists data members that should be excluded from the reachableFrom query.
  • -baseline <file>: Specify a baseline object dump. Objects in both heap dumps with the same ID and same class will be marked as not being "new".
  • -debug <int>: Set debug level.
    • 0: No debug output
    • 1: Debug hprof file parsing
    • 2: Debug hprof file parsing, no server
  • -version: Report version number
  • -h|-help: Print this help and exit
  • <file>: The file to read

For a dump file that contains multiple heap dumps, you may specify which dump in the file by appending "#" to the file name, i.e. "foo.hprof#3".
All boolean options default to "true"

标签:KB,容量,JDK,1.3,VM,GC,常用命令,使用指南,optional
From: https://www.cnblogs.com/jason207010/p/18219855

相关文章

  • systemctl常用命令
     注册服务sudovim/etc/systemd/system/test.service[Unit]Description=testJavaApplicationAfter=network.target[Service]User=rootWorkingDirectory=/data/javaApps#这里主要使用的是绝对路径,包括java命令和jar包位置,最后的#--spring.profiles.active=dev代表的是......
  • GitHub 使用指南:开发者不可或缺的工具
    GitHub详细介绍GitHub是一个全球知名的代码托管和版本控制平台,广泛用于软件开发和协作。它基于Git版本控制系统,提供了大量功能,帮助开发者高效地管理代码和项目。一、GitHub基本概念Git:一个分布式版本控制系统,Git可以跟踪和记录文件的每一次更改,这样你就可以查看文件的历......
  • tomcat-设置jdk-设置标题-设置内存-配置项目路径
    tomcat目录下把jdk、项目包复制到根目录里 catalina.batsetTITLE=server[拜特接口平台服务端]#9000[%DATE%%TIME%]remsetJAVA_HOME=D:\Bytter_T2_test\jdk1.7.0_75setJAVA_HOME=..\jdk\jdk1.7.0_17setJRE_HOME=..\jdk\jre7setCATALINA_OPTS=-Xms512m-Xm......
  • Android NDK使用指南(基础篇)
    引言在Android开发中,大多数应用程序都是用Java或Kotlin编写的。然而,有时候我们需要使用C或C++代码来提高性能,或者为了与现有的C/C++库集成。AndroidNDK就是为此目的而设计的工具包。本文将介绍AndroidNDK的相关基本概念和基础使用方法,帮助读者初步理解NDK。......
  • centos防火墙的常用命令
    一.防火墙的启动关闭启动:systemctlstartfirewalld关闭:systemctlstopfirewalld查看状态:systemctlstatusfirewalld开机禁用:systemctldisablefirewalld开机启用:systemctlenablefirewalld二.开放端口开启端口//开启流量http主要是80端口使用firewall-cmd--add-s......
  • linux常用命令3
    treetree命令参数详解`-A使用ASNI绘图字符显示树状图而非以ASCII字符组合。-C在文件和目录清单加上色彩,便于区分各种类型。-d显示目录名称而非内容。-D列出文件或目录的更改时间。-f在每个文件或目录之前,显示完整的相对路径名称。-F在执行文件,目录,Socket,符号连接,管道......
  • Nginx 配置文件使用指南
    Nginx的配置文件是对其进行各种设置和功能定义的关键。一、配置文件结构一般主要包括全局块、事件块和HTTP块等。二、全局块user:指定运行Nginx进程的用户和组。worker_processes:设置工作进程数量。三、事件块accept_mutex:决定连接处理方式。四、HTTP块server ......
  • mysql常用命令
    连接mysqlmysql-ualgorithm-hxxx-P11234-pxxx添加索引altertablewiki_update_infoaddindexidx_url(url);查看阻塞进程select*frominformation_schema.innodb_trx;常用语句selectt1.post_uuid,t1.urlfromwiki_analysis_infoast1fulljoinwiki_link_info......
  • [转帖]Moving the JDK to a Two Year LTS Cadence
    https://blogs.oracle.com/java/post/moving-the-jdk-to-a-two-year-lts-cadence?spm=a2c6h.12873639.article-detail.10.27b5e6ceactmHU ExecutiveSummary:OracleproposestoshiftthecadenceofJDKLTSreleasesfromeverythreeyearstoeverytwoyears. ......
  • JDK1.8新特性
    Lambda表达式又称为函数式编程面向对象思想:想要做什么事情,就需要创建这个类的对象,通过对象来完成某些事情函数式的思想:忽略了面向对象复杂的语法,强调做什么,而不是以什么形式做面向对象的思想实现多线程publicclassRunnableImplimplementsRunnable{@Override......