态度决定一切

0%

jvm概览

JVM参数类型

  • 标准参数
  • X 参数
  • XX 参数

标准参数

  • -help
  • -server :选择 “server” VM,默认 VM 是 server,因为您是在服务器类计算机上运行
  • -client
  • -version :输出产品版本并退出
  • -showversion :输出产品版本并继续
  • -cp :<目录和 zip/jar 文件的类搜索路径>
  • -classpath:<目录和 zip/jar 文件的类搜索路径>用 : 分隔的目录, JAR 档案和 ZIP 档案列表, 用于搜索类文件。

非标准参数: -X


例如:

XX参数分类

  • Boolean类型

  • 非 Boolean 类型

  • -Xmx -Xms

查看 JVM 运行时参数

  • -XX:+PrintFlagsInitial 打印初始值
1
#java  -XX:+PrintFlagsInitial -version ##显示当前命令进程的参数信息
  • -XX:+PrintFlagsFinal 打印最终值
1
#java  -XX:+PrintFlagsFinal -version ##显示当前命令进程的参数信息
  • -XX:+UnlockExperimentalVMOptions解锁实验参数
1
#java  -XX:+UnlockExperimentalVMOptions -version ##显示当前命令进程的参数信息
  • -XX:+UnlockDiagnosticOptions解锁诊断参数
1
#java  -XX:+UnlockDiagnosticOptions -version ##显示当前命令进程的参数信息

JPS

jps [ options ] [ hostid ]

jinfo 查看运行时参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

jinfo [ option ] pid

jinfo [ option ] executable core

jinfo [ option ] [ servier-id ] remote-hostname-or-IP

option
The command-line options. See Options.

pid
The process ID for which the configuration information is to be printed. The process must be a Java process. To get a list of Java processes running on a machine, use the jps(1) command.

executable
The Java executable from which the core dump was produced.

core
The core file for which the configuration information is to be printed.

remote-hostname-or-IP
The remote debug server hostname or IP address. See jsadebugd(1).

server-id
An optional unique ID to use when multiple debug servers are running on the same remote host.

Description
The jinfo command prints Java configuration information for a specified Java process or core file or a remote debug server. The configuration information includes Java system properties and Java Virtual Machine (JVM) command-line flags. If the specified process is running on a 64-bit JVM, then you might need to specify the -J-d64 option, for example: jinfo -J-d64 -sysprops pid.

This utility is unsupported and might not be available in future releases of the JDK. In Windows Systems where dbgeng.dll is not present, Debugging Tools For Windows must be installed to have these tools working. The PATH environment variable should contain the location of the jvm.dll that is used by the target process or the location from which the crash dump file was produced. For example, set PATH=%JDK_HOME%\jre\bin\client;%PATH% .

Options
no-option
Prints both command-line flags and system property name-value pairs.

-flag name
Prints the name and value of the specified command-line flag.

-flag [+|-]name
enables or disables the specified Boolean command-line flag.

-flag name=value
Sets the specified command-line flag to the specified value.

-flags
Prints command-line flags passed to the JVM.

-sysprops
Prints Java system properties as name-value pairs.

-h
Prints a help message.

-help
Prints a help message.

例如:

1
2
3
4
5
6
7
8
9
10
11
⇒  jinfo -flag MaxHeapSize 5796  ##查看最大内存
-XX:MaxHeapSize=4294967296

jinfo -flag UseConcMarkSweepGC 5796 ##查看是否垃圾回收器 +使用 -表示未使用
-XX:-UseConcMarkSweepGC

⇒ jinfo -flag UseG1GC 5796 ##查看是否垃圾回收器 +使用 -表示未使用
-XX:-UseG1GC

⇒ jinfo -flag UseParallelGC 5796 ##查看是否垃圾回收器 +使用 -表示未使用
-XX:+UseParallelGC

jstat 查看 JVM 统计信息

  • 查看类装载信息
  • 查看垃圾收集信息
  • 查看JIT 编译信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
jstat [ generalOption | outputOptions vmid [ interval[s|ms] [ count ] ]

generalOption: -help 、 -options

outputOptions:
class: 显示有关类加载器行为的统计信息.

compiler: 显示有关Java HotSpot VM实时编译器(JIT)行为的统计信息.

gc: 显示有关垃圾回收堆行为的统计信息.

gccapacity: 显示有关代的容量及其相应空间的统计信息.

gccause: 显示有关垃圾收集统计信息的摘要(与-gcutil相同),以及最后一个和当前(适用时)垃圾收集事件的原因.

gcnew: 显示新生代行为的统计信息.

gcnewcapacity: 显示有关新生代及其相应空间大小的统计信息.

gcold: 显示有关老年代和元空间统计信息行为的统计信息.

gcoldcapacity: 显示有关老年代大小的统计信息.

gcmetacapacity: 显示有关元空间大小的统计信息.

gcutil: 显示有关垃圾收集统计信息的摘要.

printcompilation: 显示Java HotSpot VM编译方法统计信息.

参考:[链接](https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html#BEHIGDGJ)
-gc 输出结果

这里不得不提一下 JVM 内存结构:

参考文章

官网