美文网首页
jdk命令行工具系列——检视阅读(一)

jdk命令行工具系列——检视阅读(一)

作者: 卡斯特梅的雨伞 | 来源:发表于2020-10-19 23:46 被阅读0次

    jdk命令行工具系列——检视阅读

    参考

    java虚拟机系列

    RednaxelaFX知乎问答

    RednaxelaFX博客

    jps——虚拟机进程状态工具

    jps :(JVM Process Status Tool):虚拟机进程状态工具,可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)的名称,以及这些进程的本地虚拟机的唯一ID(LVMID,Local Vitual Machine Identifier),它是使用频率最高的JDK命令行工具,因为其他JDK工具大多需要输入它查询到的LVMID来确定要监控的是哪一个虚拟机进程。

    对于本地虚拟机进程来说,LVMID与操作系统进程ID(PID,Process Identifier)是一致的。

    如果同时启动了多个虚拟机进程,无法根据进程名称定位时,那就只能依靠jps命令显示主类的功能才能区分了。

    jps命令格式:

    jps options

    jps执行样例

    D:\>jps -l
    18292
    42132 sun.tools.jps.Jps
    22616 com.jvm.test6.Test
    32284 org.jetbrains.idea.maven.server.RemoteMavenServer
    41228 org.jetbrains.jps.cmdline.Launcher
    

    jps工具主要选项

    选项 作用
    -q 只输出LVMID,省略主类的名称
    -m 输出虚拟机进程启动时传递给main()函数的参数
    -l 输出主类的全名,如果进程执行的是jar包,输出jar路径
    -v 输出虚拟机进程启动时JVM参数

    jps -q

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

    D:\>jps -q
    18292
    41012
    22616
    32284
    41228
    

    jps -m

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

    D:\>jps -m
    22616 Test 1 2
    

    jps -l

    输出主类的全名,如果进程执行的是jar包,输出jar路径。

    D:\>jps -l
    22616 com.jvm.test6.Test
    

    jar包的情况

    [root@localhost ~]# jps -l
    43248 ./code/p-parent/p-other/p-api/target/p-api-0.0.1-SNAPSHOT.jar
    43249 ./code/p-parent/p-job/target/p-job-0.0.1-SNAPSHOT.jar
    52786 sun.tools.jps.Jps
    43250 ./code/p-parent/p-core/p-core-admin/target/p-core-admin-0.0.1-SNAPSHOT.jar
    43240 ./code/p-parent/p-cloud/p-cloud-discovery/target/p-cloud-discovery-0.0.1-SNAPSHOT.jar
    43241 ./code/p-parent/p-msg/broker/p-msg-service/target/p-msg-service-0.0.1-SNAPSHOT.jar
    43242 ./code/p-parent/p-dts/service/p-dts-service/target/p-dts-service-0.0.1-SNAPSHOT.jar
    43243 ./code/p-parent/p-notification/p-notification-service/target/p-notification-service-0.0.1-SNAPSHOT.jar
    43244 ./code/p-parent/p-account/p-account-service/target/p-account-service-0.0.1-SNAPSHOT.jar
    43245 ./code/p-parent/p-borrow/p-borrow-service/target/p-borrow-service-0.0.1-SNAPSHOT.jar
    43246 ./code/p-parent/p-depository/p-depository-service/target/p-depository-service-0.0.1-SNAPSHOT.jar
    43247 ./code/p-parent/p-invest/p-invest-service/target/p-invest-service-0.0.1-SNAPSHOT.jar
    

    jps -v

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

    D:\>jps -v
    22616 Test -Xms10m -Xmx1000m
    

    jstat——虚拟机统计信息监控工具

    jstat(JVM Statistics Monitorning Tool)

    用于监控虚拟机各种运行状态信息的命令行工具。

    它可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,它是运行期定位虚拟机性能问题的首选工具。

    语法:

    [root@localhost ~]# jstat -help
    Usage: jstat -help|-options
           jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
    
    Definitions:
      <option>      An option reported by the -options option
      <vmid>        Virtual Machine Identifier. A vmid takes the following form:
                         <lvmid>[@<hostname>[:<port>]]
                    Where <lvmid> is the local vm identifier for the target
                    Java virtual machine, typically a process id; <hostname> is
                    the name of the host running the target Java virtual machine;
                    and <port> is the port number for the rmiregistry on the
                    target host. See the jvmstat documentation for a more complete
                    description of the Virtual Machine Identifier.
      <lines>       Number of samples between header lines.
      <interval>    Sampling interval. The following forms are allowed:
                        <n>["ms"|"s"]
                    Where <n> is an integer and the suffix specifies the units as 
                    milliseconds("ms") or seconds("s"). The default units are "ms".
      <count>       Number of samples to take before terminating.
      -J<flag>      Pass <flag> directly to the runtime system.
    

    参数 interval 和 count 代表查询间隔和次数,如果省略这两个参数,说明只查询一次。假如需要每250毫秒查询一次进程2764垃圾收集的情况,一共查询20次,那么命令应该是:jstat -gc 2764 250 20

    //示例:查看本地idea的gc情况
    //获得idea进程LVMID
    jps -v / jps -l
    //每3秒打印一次gc情况打印20次
    F:\>jstat -gc 9884 3000 20
     S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
    24320.0 24320.0 1548.3  0.0   194752.0 160077.1  486592.0   183242.4  373312.0 348566.7 49336.0 44180.1   1876   15.138  105    39.248   54.386
    24320.0 24320.0 1548.3  0.0   194752.0 164783.3  486592.0   183242.4  373312.0 348566.7 49336.0 44180.1   1876   15.138  105    39.248   54.386
    

    主要选项

    选项 作用
    -class 监视类装载、卸载数量、总空间及类装载所耗费的时间
    -gc 监视Java堆状况,包括Eden区、2个Survivor区、老年代、永久代等容量、已用空间、GC合计时间等信息
    -gccapacity 监视内容与-gc基本相同,但输出主要关注java堆各区域使用到的最大和最小空间
    -gcutil 监控内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比
    -gccause 与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因
    -gcnew 监视新生代GC的状况
    -gcnewcapacity 监视内容与-gcnew基本相同,输出主要关注使用到的最大和最小空间
    -gcold 监视老年代GC的状况
    -gcoldcapacity 监视内容与-gcold基本相同,输出主要关注使用到的最大和最小空间
    -gcpermcapacity 输出永久代使用到的最大和最小空间
    -compiler 输出JIT编译器编译过的方法、耗时等信息
    -printcompilation 输出已被JIT编译的方法

    统计加载类的信息

    命令:jstat -class

    [root@test1117 ~]# jstat -class 21434
    Loaded  Bytes  Unloaded  Bytes     Time   
      8776 18268.0        0     0.0       6.05
    

    列名 说明
    Loaded 装载的类的数量
    Bytes 装载类所占用的字节数
    Unloaded 卸载类的数量
    Bytes 卸载类所占用的字节数
    Time 装载类和卸载类所耗费的时间(毫秒)

    编译统计

    命令:jstat -compiler pid

    [root@test1117 ~]# jstat -compiler 21434
    Compiled Failed Invalid   Time   FailedType FailedMethod
        1721      1       0    34.87          1 org/apache/catalina/loader/WebappClassLoaderBase findResourceInternal
    

    列名 说明
    Compiled 编译任务执行数量
    Failed 编译任务执行失败的数量
    Invalid 编译任务失效的数量
    Time 编译总耗时(毫秒)
    FailedType 最后一个编译失败任务的类型
    FailedMethod 最后一个编译失败任务所在的类及方法

    垃圾回收统计——GC的各区域容量和已使用容量、GC次数及消耗时间

    命令:jstat -gc

    [root@test1117 ~]# jstat -gc 21434
     S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT   
    13312.0 13824.0  0.0   1040.0 146432.0 140089.9  349696.0   252384.5  262144.0 55374.3     47    0.921   0      0.000    0.921
    

    列名 说明
    S0C 年轻代中第一个survior(幸存区)的容量(kb)
    S1C 年轻代中第二个survior(幸存区)的容量(kb)
    S0U 年轻代中第一个survior(幸存区)目前已使用的容量(kb)
    S1U 年轻代中第二个survior(幸存区)目前已使用的容量(kb)
    EC eden区的容量(kb):eden capacity
    EU eden区目前已使用的容量(kb):eden used
    OC 老年代的容量(kb):old capacity
    OU 老年代目前已使用的容量(kb)
    PC perm永久代的容量(kb)
    PU perm永久代目前已使用的容量(kb)
    YGC 从应用程序启动到采集时年轻代中gc次数
    YGCT 从应用程序启动到采集时年轻代中gc所用总时间(秒)
    FGC 从应用程序启动到采集时老年代中gc次数
    FGCT 从应用程序启动到采集时老年代gc所用的总时间(秒)
    GCT 从应用程序启动到采集时gc所用的总时间(秒)
    CCSC 压缩类空间容量(KB) compact class space capacity ,jdk1.8
    CCSU 压缩空间目前已使用大小(KB) ,jdk1.8
    MC 元空间的容量(KB) Metaspace capacity,jdk1.8的方法区不再是永久代实现,而是元空间
    MU 元空间目前已使用大小(KB) ,jdk1.8

    统计gc信息——关注各区域已使用空间占总空间的百分比

    命令:jstat -gcutil

    [root@test1117 ~]# jstat -gcutil 21434
      S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
      7.81   0.00  46.68  72.18  21.12     48    0.934     0    0.000    0.934
    

    列名 说明
    S0 年轻代中第一个(survisor)幸存区已使用的容量占比
    S1 年轻代中第二个(survisor)幸存区已使用的容量占比
    E 伊旬园(eden)区已使用的容量占比
    O 老年代区已使用的容量占比
    P 永久代(perm)已使用的容量占比
    YGC 年轻代到目前gc次数
    YGCT 年轻代到目前gc耗费的总时间(秒)
    FGC 老年代目前gc次数
    FGCT 老年代目前gc耗费的总时间(秒)
    GC 从应用程序到目前gc总耗时(秒)
    M 元空间(metaspace)已使用的容量占比,jdk1.8后方法区用元空间实现
    CCS 压缩类空间已使用的容量占比

    堆内存统计——主要关注java堆各区域使用到的最大和最小空间

    命令:jstat -gccapacity

    [root@test1117 ~]# jstat -gccapacity 21434
     NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC      PGCMN    PGCMX     PGC       PC     YGC    FGC 
    175104.0 393216.0 175104.0 13312.0 12288.0 149504.0   349696.0   655360.0   349696.0   349696.0 262144.0 524288.0 262144.0 262144.0     48     0
    

    列名 说明
    NGCMN 年轻代(young)中初始化(最小)的大小(kb)
    NGCMX 年轻代(young)中初始化(最大)的大小(kb)
    NGC 年轻代(young)中当前的容量(kb)
    S0C 年轻代中第一个(survisor)幸存区的容量(kb)
    S1C 年轻代中第二个(survisor)幸存区的容量(kb)
    EC 年轻代中(Eden)伊旬园的容量(kb)
    OGCMN 老年代(old)中初始化(最小)的容量(kb)
    OGCMX 老年代(old)中初始化(最大)的容量(kb)
    OGC 当前老年代的大小(kb)
    OC 当前老年代的大小(kb)
    PGCMN 永久代(perm)中初始化(最小)的大小(kb)
    PGCMX 永久代(perm)中初始化(最大)的大小(kb)
    PGC 永久代当前的大小(kb)
    PC 永久代当前的大小(kb)
    YGC 从应用程序启动到采集时年轻代gc的次数
    FGC 从应用程序启动带采集时老年代gc的次数
    MCMN 元空间(metaspace)中初始化(最小)的大小(kb),jdk1.8后方法区用元空间实现
    MCMX 元空间(metaspace)中初始化(最大)的大小(kb),jdk1.8
    MC 元空间当前的大小(kb),jdk1.8
    CCSMN 压缩类空间中初始化(最小)的大小(kb),jdk1.8
    CCSMX 压缩类空间中初始化(最大)的大小(kb),jdk1.8
    CCSC 压缩类空间当前的大小(kb),jdk1.8

    新生代垃圾回收统计——监视新生代GC的状况

    命令:jstat -gcnew

    D:\code\IdeaProjects\javafx-demo1\src\test>jstat -gcnew 4016
     S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC     YGCT
    1024.0 1024.0    0.0    0.0 15  15  512.0   8192.0   7328.4    465    0.120
    

    列名 说明
    S0C 年轻代中第一个(survisor)幸存区的容量(kb)
    S1C 年轻代中第二个(survisor)幸存区的容量(kb)
    S0U 年轻代中第一个(survisor)幸存区目前已使用的容量(kb)
    S1U 年轻代中第二个(survisor)幸存区目前已使用的容量(kb)
    TT 对象在新生代中存活的次数
    MTT 对象在新生代中存活的最大次数
    DSS 当前需要survivor(幸存区)的容量 (kb)(Eden区已满)
    EC 伊旬园(eden)区的大小(kb)
    EU 伊旬园(eden)区已使用的大小(kb)
    YGC 到目前年轻代gc的次数
    YGCT 到目前年轻代gc所耗费的时间(秒)

    新生代内存统计——主要关注新生代使用到的最大和最小空间

    命令:jstat -gcnewcapacity

    D:\code\IdeaProjects\javafx-demo1\src\test>jstat -gcnewcapacity 4016
      NGCMN      NGCMX       NGC      S0CMX     S0C     S1CMX     S1C       ECMX        EC      YGC   FGC
       10240.0    10240.0    10240.0   1024.0   1024.0   1024.0   1024.0     8192.0     8192.0   647     0
    

    列名 说明
    NGCMN 年轻代中初始化最小容量(kb)
    NGCMX 年轻代中初始化最大容量(kb)
    NGC 年轻代当前容量(kb)
    S0CMX 年轻代第一个幸存区(survisor)最大容量(kb)
    S0C 年轻代第一个幸存区(survisor)当前容量(kb)
    S1CMX 年轻代第二个幸存区(survisor)最大容量(kb)
    S1C 年轻代第二个幸存区(survisor)当前容量(kb)
    ECMX 年轻代伊旬园区(Eden)最大容量(kb)
    EC 年轻代伊旬园区(Eden)当前容量(kb)
    YGC 截止到目前年轻代gc次数
    FGC 截止到目前老年代gc次数

    老年代垃圾回收统计——监视老年代GC的状况

    命令:jstat -gcold

    [root@test1117 ~]# jstat -gcold 21434
       PC       PU        OC          OU       YGC    FGC    FGCT     GCT   
    262144.0  55374.3    349696.0    252424.5     48     0    0.000    0.934
    

    列名 说明
    PC 永久区(perm)容量(kb)
    PU 永久区(perm)已使用容量(kb)
    OC 老年代容量(kb)
    OU 老年代已使用容量(kb)
    YGC 截止到目前年轻代gc次数
    FGC 截止到目前老年代gc次数
    GCT 截止到目前gc耗费的总时间(秒)
    MC 元空间容量(kb),jdk1.8后方法区用元空间实现
    MU 元空间已使用容量(kb),jdk1.8
    CCSC 压缩类空间容量(kb),jdk1.8
    CCSU 压缩类空间已使用容量(kb),jdk1.8

    老年代内存统计——关注老年代使用到的最大和最小空间

    命令:jstat -gcoldcapacity

    [root@test1117 ~]# jstat -gcoldcapacity 21434
       OGCMN       OGCMX        OGC         OC       YGC   FGC    FGCT     GCT   
       349696.0    655360.0    349696.0    349696.0    48     0    0.000    0.934
    

    列名 说明
    OGCMN 老年代最小容量(kb)
    OGCMX 老年代最大容量(kb)
    OGC 老年代目前生成的容量(kb):表示目前老年代的全部容量(容量或根据需要变化)
    OC 老年代目前容量(kb)
    YGC 截止到目前年轻代gc次数
    FGC 截止到目前老年代gc次数
    FGCT 截止到目前老年代gc耗费的总时间(秒)
    GCT 截止到目前gc耗费的总时间(秒)

    永久代内存统计——永久代使用到的最大和最小空间

    命令:jstat -gcpermcapacity

    如果是jdk1.8使用 jstat -gcmetacapacity 9884 1000 3

    [root@test1117 ~]# jstat -gcpermcapacity 21434 /jstat -gcmetacapacity 9884 1000 3
      PGCMN      PGCMX       PGC         PC      YGC   FGC    FGCT     GCT   
      262144.0   524288.0   262144.0   262144.0    49     0    0.000    0.948
    

    列名 说明
    PGCMN 永久代最小容量(kb)
    PGCMX 永久代最大容量(kb)
    PGC 永久代当前生成的容量(kb):perm general capacity :永久代总的容量
    PC 永久代当前容量(kb)
    YGC 截止目前年轻代gc次数
    FGC 截止目前老年代gc次数
    FGCT 截止目前年轻代gc耗费的总时间(秒)
    GCT 截止目前老年代gc耗费的总时间(秒)

    最近二次gc统计——主要关注已使用空间占总空间的百分比 ,会额外输出导致上一次GC产生的原因

    命令:gstat -gccause

    [root@test1117 ~]# jstat -gccause 21434
      S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC                 
      0.00   8.72  33.06  72.20  21.12     49    0.948     0    0.000    0.948 Allocation Failure   No GC
    

    列名 说明
    LGCC 最近垃圾回收的原因
    GCC 当前垃圾回收的原因

    JVM编译方法统计

    命令:jstat -printcompilation

    [root@test1117 ~]# jstat -printcompilation 21434
    Compiled  Size  Type Method
        1721    554    1 org/jboss/netty/channel/socket/nio/AbstractNioWorker write0
    

    列名 说明
    Compiled 最近编译方法的数量
    Size 最近编译方法的字节码数量?单位呢?
    Type 最近编译方法的编译类型
    Method 方法名标识

    疑问:

    Q: 如下linux的命令行格式如何理解,尖括号和中括号表示什么意思?

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

    Q:老年代(old)中初始化(最小)的容量(kb),这个初始化怎么理解?是不是只一开始分配的空间大小和后面动态扩容空间后的容量大小?

    Q:当操作 jstat -gcnew pid 时,对于显示出来的下面这3个值要怎么理解?TT 对象在新生代中存活的次数是指哪部分的对象,是指当前所有存活的对象中,其中存活时间最久的那个对象在新生代中存活的次数么?而对象在新生代中存活的最大次数是指从启动到目前为止历史上对象在对象在新生代中存活的最大次数么?当前需要survivor(幸存区)的容量 (kb)是指什么?是指上一次eden区满时需要的survivor(幸存区)的容量大小是么?

    TT 对象在新生代中存活的次数 MTT 对象在新生代中存活的最大次数 DSS 当前需要survivor(幸存区)的容量 (kb)(Eden区已满)

    Q: CCSC:压缩类空间是什么意思?

    A: 参考

    这是java1.8后把方法区的实现从永久代改为元空间实现后有的概念,Java8在UseCompressedOops之外,额外增加了一个新选项叫做UseCompressedClassPointer。这个选项打开后,class信息中的指针也用32bit的Compressed版本。而这些指针指向的空间被称作“Compressed Class Space”。默认大小是1G,但可以通过“CompressedClassSpaceSize”调整。是给元空间使用的。

    如果你的java程序引用了太多的包,有可能会造成这个空间不够用,于是会看到

    java.lang.OutOfMemoryError: Compressed class space
    

    这时,一般调大CompreseedClassSpaceSize就可以了。

    扩展作者回答:

    在Java8以前,有一个选项是UseCompressedOops:使用压缩原始指针。所谓OOPS是指“ordinary object pointers“,就是原始指针。Java Runtime可以用这个指针直接访问指针对应的内存,做相应的操作(比如发起GC时做copy and sweep)。

    那么Compressed是啥意思?64bit的JVM出现后,OOPS的尺寸也变成了64bit,比之前的大了一倍。这会引入性能损耗——占的内存double了,并且同尺寸的CPU Cache要少存一倍的OOPS。

    于是就有了UseCompressedOops这个选项。打开后,OOPS变成了32bit。但32bit的base是8,所以能引用的空间是32GB——这远大于目前经常给jvm进程内存分配的空间。

    一般建议不要给JVM太大的内存,因为Heap太大,GC停顿实在是太久了。所以很多开发者喜欢在大内存机器上开多个JVM进程,每个给比如最大8G以下的内存。

    从JDK6_u23开始UseCompressedOops被默认打开了。因此既能享受64bit带来的好处,又避免了64bit带来的性能损耗。当然,如果你有机会使用超过32G的堆内存,记得把这个选项关了。

    到了Java8,永久代被干掉了,有了“meta space”的概念,存储jvm中的元数据,包括byte code,class等信息。Java8在UseCompressedOops之外,额外增加了一个新选项叫做UseCompressedClassPointer:使用压缩类指针。这个选项打开后,class信息中的指针也用32bit的Compressed版本。而这些指针指向的空间被称作“Compressed Class Space”。默认大小是1G,但可以通过“CompressedClassSpaceSize”调整。

    如果你的java程序引用了太多的包,有可能会造成这个空间不够用,于是会看到

    java.lang.OutOfMemoryError: Compressed class space
    

    这时,一般调大CompreseedClassSpaceSize就可以了。

    -XX:+UseCompressedClassPointers 是需要 -XX:+UseCompressedOops 开启的,所以堆大小要是大于 32G,CompressedOops 自动关闭,CompressedClassPointers 也会关闭的,关闭了就没有 Compressed Class Space 了,这块就是 Class Space 了。

    -XX:CompressedClassSpaceSize 大小的设置也是有限制,因为压缩开关是受制于 32G,所以这个自然也是不能大于 32G,不过 hotspot 规定了这个参数不准大于 3G,所以这个参数其实是不能大于 3G。

    一般来说,平均一个 Klass 大小可以当成 1K 来算,默认的 1G 大小可以存储 100 万的 Klass。如果遇到了 java.lang.OutOfMemoryError: Compressed class space,就是类太多了,需要结合具体情况去选择 JVM 调优还是 bug 排查。

    jinfo——jvm配置信息工具

    jinfo(Configuration Info for Java)的作用是实时地查看和调整虚拟机的各项参数。

    使用jps -v 可以查看虚拟机启动时显示指定的参数列表,但是如果想知道未被显示指定的参数的系统默认值,可以使用jinfo的-flag选项进行查询了。

    [root@localhost ~]# jinfo
    Usage:
        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)
    
    where <option> is one of:
        -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
    

    jinfo -flags <pid>——打印所有的jvm标志信息

    注意打印所有的jvm标志信息要用 -flags

    F:\new>jps -l
    6512 org.jetbrains.jps.cmdline.Launcher
    13928 sun.tools.jps.Jps
    8252 com.intellij.rt.execution.junit.JUnitStarter
    9884
    
    F:\new>jinfo -flags 8252
    Attaching to process ID 8252, please wait...
    Debugger attached successfully.
    Server compiler detected.
    JVM version is 25.171-b11
    Non-default VM flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=10485760 -XX:MaxHeapSize=104857600 -XX:MaxNewSize=34603008 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=3145728 -XX:OldSize
    =7340032 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
    Command line:  -Xms10m -Xmx100m -Didea.test.cyclic.buffer.size=1048576 -javaagent:F:\idea\IntelliJ IDEA 2018.1.6\lib\idea_rt.jar=52421:F:\idea\IntelliJ IDEA 2018.1.6\bin -Dfile.encodi
    ng=UTF-8
    
    • Non-default VM flags: 非默认VM标志
    • Command line: 命令行中指定的jvm参数

    jinfo -flag <name> <pid>—— 打印指定的jvm参数信息

    [root@localhost ~]# jinfo -flag InitialHeapSize 113595
    -XX:InitialHeapSize=522190848
    

    jinfo -flag [+|-] <name> <pid> ——启用或者禁用指定的jvm参数

    我们运行一段程序,下面这段程序vm参数设置为:-Xms5m -Xmx5m,运行过程中会参数OOM,在运行过程中,我们添加vm参数:+HeapDumpOnOutOfMemoryError:发生OOM的时候,让程序打印堆dump文件

    public class Test7 {
        private static final int _1M = 1024 * 1024;
        public static void main(String[] args) throws InterruptedException {
            List<Object> list = new ArrayList<>();
            for (int i = 0; i < 10; i++) {
                TimeUnit.SECONDS.sleep(3);
                list.add(new byte[_1M]);
            }
        }
    }
    

    运行过程中添加参数

    C:\Users\Think>jps -l
    44520 com.jvm.test7.Test7
    
    C:\Users\Think>jinfo -flag +HeapDumpOnOutOfMemoryError 44520
    
    C:\Users\Think>jinfo -flags 44520
    Attaching to process ID 44520, please wait...
    Debugger attached successfully.
    Server compiler detected.
    JVM version is 25.121-b13
    Non-default VM flags: -XX:CICompilerCount=4 -XX:+HeapDumpOnOutOfMemoryError -XX:InitialHeapSize=6291456 -XX:MaxHeapSize=6291456 -XX:MaxNewSize=2097152 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=2097152 -XX:OldSize=4194304 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
    Command line:  -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:53193,suspend=y,server=n -Xms5m -Xmx5m -Dfile.encoding=UTF-8
    

    程序运行结果:

    Connected to the target VM, address: '127.0.0.1:53193', transport: 'socket'
    java.lang.OutOfMemoryError: Java heap space
    Dumping heap to java_pid44520.hprof ...
    Disconnected from the target VM, address: '127.0.0.1:53193', transport: 'socket'
    Heap dump file created [4535342 bytes in 0.009 secs]
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
        at com.jvm.test7.Test7.main(Test7.java:18)
    

    jinfo -flag <name>=<value> <pid>——给指定的jvm参数设置值

    注意很多堆等内存大小值是不能设置的,dump内存可以设置。

    jinfo -flag HeapDumpPath=/temooo/heap.hprof 9580
    

    jinfo -sysprops <pid>——打印系统参数信息

    打印的信息和System.getProperties()一样。

    C:\Users\Think>jinfo -sysprops 44748
    Attaching to process ID 44748, please wait...
    Debugger attached successfully.
    Server compiler detected.
    JVM version is 25.121-b13
    java.runtime.name = Java(TM) SE Runtime Environment
    java.vm.version = 25.121-b13
    sun.boot.library.path = D:\installsoft\Java\jdk1.8.0_121\jre\bin
    java.vendor.url = http://java.oracle.com/
    java.vm.vendor = Oracle Corporation
    path.separator = ;
    file.encoding.pkg = sun.io
    java.vm.name = Java HotSpot(TM) 64-Bit Server VM
    sun.os.patch.level =
    sun.java.launcher = SUN_STANDARD
    user.script =
    user.country = CN
    user.dir = D:\code\IdeaProjects\spring-aop-demo
    java.vm.specification.name = Java Virtual Machine Specification
    java.runtime.version = 1.8.0_121-b13
    java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironment
    os.arch = amd64
    java.endorsed.dirs = D:\installsoft\Java\jdk1.8.0_121\jre\lib\endorsed
    line.separator =
    
    java.io.tmpdir = C:\Users\Think\AppData\Local\Temp\
    java.vm.specification.vendor = Oracle Corporation
    user.variant =
    os.name = Windows 10
    sun.jnu.encoding = GBK
    java.library.path = D:\installsoft\Java\jdk1.8.0_121\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files\Docker\Docker\Resources\bin;D:\installsoft\maven\apache-maven-3.3.9\bin;D:\installsoft\Java\jdk1.8.0_121\bin;D:\installsoft\Java\jdk1.8.0_121\jre\bin;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\iCLS\;C:\Program Files\Intel\Intel(R) Management Engine Components\iCLS\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;D:\installsoft\TortoiseSVN\bin;C:\Program Files (x86)\Common Files\Thunder Network\KanKan\Codecs;D:\ady\ffmpeg\ffmpeg\bin;D:\installsoft\MySQL\mysql-5.7.25-winx64\bin;D:\installsoft\Git\cmd;D:\installsoft\Go\bin;C:\Users\Think\AppData\Local\Microsoft\WindowsApps;;D:\installsoft\SSH Communications Security\SSH Secure Shell;D:\installsoft\Docker Toolbox;D:\installsoft\Docker Toolbox;C:\Users\Think\go\bin;.
    java.specification.name = Java Platform API Specification
    java.class.version = 52.0
    sun.management.compiler = HotSpot 64-Bit Tiered Compilers
    os.version = 10.0
    user.home = C:\Users\Think
    user.timezone =
    java.awt.printerjob = sun.awt.windows.WPrinterJob
    file.encoding = UTF-8
    java.specification.version = 1.8
    user.name = Think
    java.class.path = D:\installsoft\Java\jdk1.8.0_121\jre\lib\charsets.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\deploy.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\access-bridge-64.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\cldrdata.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\dnsns.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\jaccess.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\jfxrt.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\localedata.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\nashorn.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\sunec.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\sunjce_provider.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\sunmscapi.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\sunpkcs11.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\zipfs.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\javaws.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\jce.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\jfr.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\jfxswt.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\jsse.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\management-agent.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\plugin.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\resources.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\rt.jar;D:\code\IdeaProjects\spring-aop-demo\target\test-classes;D:\code\IdeaProjects\spring-aop-demo\target\classes;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\boot\spring-boot-starter-aop\2.1.4.RELEASE\spring-boot-starter-aop-2.1.4.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\boot\spring-boot-starter\2.1.4.RELEASE\spring-boot-starter-2.1.4.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\boot\spring-boot\2.1.4.RELEASE\spring-boot-2.1.4.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\spring-context\5.1.6.RELEASE\spring-context-5.1.6.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\spring-expression\5.1.6.RELEASE\spring-expression-5.1.6.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\boot\spring-boot-autoconfigure\2.1.4.RELEASE\spring-boot-autoconfigure-2.1.4.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\boot\spring-boot-starter-logging\2.1.4.RELEASE\spring-boot-starter-logging-2.1.4.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\installsoft\maven\.m2\repository3.3.9_0\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\slf4j\slf4j-api\1.7.26\slf4j-api-1.7.26.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\apache\logging\log4j\log4j-to-slf4j\2.11.2\log4j-to-slf4j-2.11.2.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\apache\logging\log4j\log4j-api\2.11.2\log4j-api-2.11.2.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\slf4j\jul-to-slf4j\1.7.26\jul-to-slf4j-1.7.26.jar;D:\installsoft\maven\.m2\repository3.3.9_0\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\yaml\snakeyaml\1.23\snakeyaml-1.23.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\spring-aop\5.1.6.RELEASE\spring-aop-5.1.6.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\spring-beans\5.1.6.RELEASE\spring-beans-5.1.6.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\aspectj\aspectjweaver\1.9.2\aspectjweaver-1.9.2.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\projectlombok\lombok\1.18.6\lombok-1.18.6.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\boot\spring-boot-starter-test\2.1.4.RELEASE\spring-boot-starter-test-2.1.4.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\boot\spring-boot-test\2.1.4.RELEASE\spring-boot-test-2.1.4.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\boot\spring-boot-test-autoconfigure\2.1.4.RELEASE\spring-boot-test-autoconfigure-2.1.4.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\com\jayway\jsonpath\json-path\2.4.0\json-path-2.4.0.jar;D:\installsoft\maven\.m2\repository3.3.9_0\junit\junit\4.12\junit-4.12.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\assertj\assertj-core\3.11.1\assertj-core-3.11.1.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\mockito\mockito-core\2.23.4\mockito-core-2.23.4.jar;D:\installsoft\maven\.m2\repository3.3.9_0\net\bytebuddy\byte-buddy\1.9.12\byte-buddy-1.9.12.jar;D:\installsoft\maven\.m2\repository3.3.9_0\net\bytebuddy\byte-buddy-agent\1.9.12\byte-buddy-agent-1.9.12.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\objenesis\objenesis\2.6\objenesis-2.6.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\hamcrest\hamcrest-library\1.3\hamcrest-library-1.3.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\skyscreamer\jsonassert\1.5.0\jsonassert-1.5.0.jar;D:\installsoft\maven\.m2\repository3.3.9_0\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\spring-core\5.1.6.RELEASE\spring-core-5.1.6.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\spring-jcl\5.1.6.RELEASE\spring-jcl-5.1.6.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\spring-test\5.1.6.RELEASE\spring-test-5.1.6.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\xmlunit\xmlunit-core\2.6.2\xmlunit-core-2.6.2.jar;D:\installsoft\Java\jdk1.8.0_121\lib\tools.jar;E:\yjd\软 件\Intellij IDEA\ideaIU-2017.1.5.win\lib\idea_rt.jar
    java.vm.specification.version = 1.8
    sun.arch.data.model = 64
    sun.java.command = com.jvm.test6.Test 1 2
    java.home = D:\installsoft\Java\jdk1.8.0_121\jre
    user.language = zh
    java.specification.vendor = Oracle Corporation
    awt.toolkit = sun.awt.windows.WToolkit
    java.vm.info = mixed mode
    java.version = 1.8.0_121
    java.ext.dirs = D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext;C:\Windows\Sun\Java\lib\ext
    sun.boot.class.path = D:\installsoft\Java\jdk1.8.0_121\jre\lib\resources.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\rt.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\sunrsasign.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\jsse.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\jce.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\charsets.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\jfr.jar;D:\installsoft\Java\jdk1.8.0_121\jre\classes
    java.vendor = Oracle Corporation
    file.separator = \
    java.vendor.url.bug = http://bugreport.sun.com/bugreport/
    sun.io.unicode.encoding = UnicodeLittle
    sun.cpu.endian = little
    sun.desktop = windows
    sun.cpu.isalist = amd64
    

    jinfo <pid>——打印以上所有配置信息

    C:\Users\Think>jinfo 44748
    Attaching to process ID 44748, please wait...
    Debugger attached successfully.
    Server compiler detected.
    JVM version is 25.121-b13
    Java System Properties:
    
    java.runtime.name = Java(TM) SE Runtime Environment
    java.vm.version = 25.121-b13
    sun.boot.library.path = D:\installsoft\Java\jdk1.8.0_121\jre\bin
    java.vendor.url = http://java.oracle.com/
    java.vm.vendor = Oracle Corporation
    path.separator = ;
    file.encoding.pkg = sun.io
    java.vm.name = Java HotSpot(TM) 64-Bit Server VM
    sun.os.patch.level =
    sun.java.launcher = SUN_STANDARD
    user.script =
    user.country = CN
    user.dir = D:\code\IdeaProjects\spring-aop-demo
    java.vm.specification.name = Java Virtual Machine Specification
    java.runtime.version = 1.8.0_121-b13
    java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironment
    os.arch = amd64
    java.endorsed.dirs = D:\installsoft\Java\jdk1.8.0_121\jre\lib\endorsed
    line.separator =
    
    java.io.tmpdir = C:\Users\Think\AppData\Local\Temp\
    java.vm.specification.vendor = Oracle Corporation
    user.variant =
    os.name = Windows 10
    sun.jnu.encoding = GBK
    java.library.path = D:\installsoft\Java\jdk1.8.0_121\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files\Docker\Docker\Resources\bin;D:\installsoft\maven\apache-maven-3.3.9\bin;D:\installsoft\Java\jdk1.8.0_121\bin;D:\installsoft\Java\jdk1.8.0_121\jre\bin;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\iCLS\;C:\Program Files\Intel\Intel(R) Management Engine Components\iCLS\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;D:\installsoft\TortoiseSVN\bin;C:\Program Files (x86)\Common Files\Thunder Network\KanKan\Codecs;D:\ady\ffmpeg\ffmpeg\bin;D:\installsoft\MySQL\mysql-5.7.25-winx64\bin;D:\installsoft\Git\cmd;D:\installsoft\Go\bin;C:\Users\Think\AppData\Local\Microsoft\WindowsApps;;D:\installsoft\SSH Communications Security\SSH Secure Shell;D:\installsoft\Docker Toolbox;D:\installsoft\Docker Toolbox;C:\Users\Think\go\bin;.
    java.specification.name = Java Platform API Specification
    java.class.version = 52.0
    sun.management.compiler = HotSpot 64-Bit Tiered Compilers
    os.version = 10.0
    user.home = C:\Users\Think
    user.timezone =
    java.awt.printerjob = sun.awt.windows.WPrinterJob
    file.encoding = UTF-8
    java.specification.version = 1.8
    user.name = Think
    java.class.path = D:\installsoft\Java\jdk1.8.0_121\jre\lib\charsets.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\deploy.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\access-bridge-64.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\cldrdata.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\dnsns.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\jaccess.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\jfxrt.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\localedata.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\nashorn.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\sunec.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\sunjce_provider.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\sunmscapi.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\sunpkcs11.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext\zipfs.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\javaws.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\jce.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\jfr.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\jfxswt.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\jsse.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\management-agent.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\plugin.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\resources.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\rt.jar;D:\code\IdeaProjects\spring-aop-demo\target\test-classes;D:\code\IdeaProjects\spring-aop-demo\target\classes;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\boot\spring-boot-starter-aop\2.1.4.RELEASE\spring-boot-starter-aop-2.1.4.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\boot\spring-boot-starter\2.1.4.RELEASE\spring-boot-starter-2.1.4.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\boot\spring-boot\2.1.4.RELEASE\spring-boot-2.1.4.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\spring-context\5.1.6.RELEASE\spring-context-5.1.6.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\spring-expression\5.1.6.RELEASE\spring-expression-5.1.6.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\boot\spring-boot-autoconfigure\2.1.4.RELEASE\spring-boot-autoconfigure-2.1.4.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\boot\spring-boot-starter-logging\2.1.4.RELEASE\spring-boot-starter-logging-2.1.4.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\installsoft\maven\.m2\repository3.3.9_0\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\slf4j\slf4j-api\1.7.26\slf4j-api-1.7.26.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\apache\logging\log4j\log4j-to-slf4j\2.11.2\log4j-to-slf4j-2.11.2.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\apache\logging\log4j\log4j-api\2.11.2\log4j-api-2.11.2.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\slf4j\jul-to-slf4j\1.7.26\jul-to-slf4j-1.7.26.jar;D:\installsoft\maven\.m2\repository3.3.9_0\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\yaml\snakeyaml\1.23\snakeyaml-1.23.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\spring-aop\5.1.6.RELEASE\spring-aop-5.1.6.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\spring-beans\5.1.6.RELEASE\spring-beans-5.1.6.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\aspectj\aspectjweaver\1.9.2\aspectjweaver-1.9.2.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\projectlombok\lombok\1.18.6\lombok-1.18.6.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\boot\spring-boot-starter-test\2.1.4.RELEASE\spring-boot-starter-test-2.1.4.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\boot\spring-boot-test\2.1.4.RELEASE\spring-boot-test-2.1.4.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\boot\spring-boot-test-autoconfigure\2.1.4.RELEASE\spring-boot-test-autoconfigure-2.1.4.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\com\jayway\jsonpath\json-path\2.4.0\json-path-2.4.0.jar;D:\installsoft\maven\.m2\repository3.3.9_0\junit\junit\4.12\junit-4.12.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\assertj\assertj-core\3.11.1\assertj-core-3.11.1.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\mockito\mockito-core\2.23.4\mockito-core-2.23.4.jar;D:\installsoft\maven\.m2\repository3.3.9_0\net\bytebuddy\byte-buddy\1.9.12\byte-buddy-1.9.12.jar;D:\installsoft\maven\.m2\repository3.3.9_0\net\bytebuddy\byte-buddy-agent\1.9.12\byte-buddy-agent-1.9.12.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\objenesis\objenesis\2.6\objenesis-2.6.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\hamcrest\hamcrest-library\1.3\hamcrest-library-1.3.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\skyscreamer\jsonassert\1.5.0\jsonassert-1.5.0.jar;D:\installsoft\maven\.m2\repository3.3.9_0\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\spring-core\5.1.6.RELEASE\spring-core-5.1.6.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\spring-jcl\5.1.6.RELEASE\spring-jcl-5.1.6.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\springframework\spring-test\5.1.6.RELEASE\spring-test-5.1.6.RELEASE.jar;D:\installsoft\maven\.m2\repository3.3.9_0\org\xmlunit\xmlunit-core\2.6.2\xmlunit-core-2.6.2.jar;D:\installsoft\Java\jdk1.8.0_121\lib\tools.jar;E:\yjd\软 件\Intellij IDEA\ideaIU-2017.1.5.win\lib\idea_rt.jar
    java.vm.specification.version = 1.8
    sun.arch.data.model = 64
    sun.java.command = com.jvm.test6.Test 1 2
    java.home = D:\installsoft\Java\jdk1.8.0_121\jre
    user.language = zh
    java.specification.vendor = Oracle Corporation
    awt.toolkit = sun.awt.windows.WToolkit
    java.vm.info = mixed mode
    java.version = 1.8.0_121
    java.ext.dirs = D:\installsoft\Java\jdk1.8.0_121\jre\lib\ext;C:\Windows\Sun\Java\lib\ext
    sun.boot.class.path = D:\installsoft\Java\jdk1.8.0_121\jre\lib\resources.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\rt.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\sunrsasign.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\jsse.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\jce.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\charsets.jar;D:\installsoft\Java\jdk1.8.0_121\jre\lib\jfr.jar;D:\installsoft\Java\jdk1.8.0_121\jre\classes
    java.vendor = Oracle Corporation
    file.separator = \
    java.vendor.url.bug = http://bugreport.sun.com/bugreport/
    sun.io.unicode.encoding = UnicodeLittle
    sun.cpu.endian = little
    sun.desktop = windows
    sun.cpu.isalist = amd64
    
    VM Flags:
    Non-default VM flags: -XX:CICompilerCount=4 -XX:InitialHeapSize=10485760 -XX:MaxHeapSize=1048576000 -XX:MaxNewSize=349175808 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=3145728 -XX:OldSize=7340032 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
    Command line:  -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:64223,suspend=y,server=n -Xms10m -Xmx1000m -Dfile.encoding=UTF-8
    

    相关文章

      网友评论

          本文标题:jdk命令行工具系列——检视阅读(一)

          本文链接:https://www.haomeiwen.com/subject/ykkrmktx.html