jpsjps 无参数:显示进程的ID 和 类的名称 jps 原理 java程序在启动以后,会在java.io.tmpdir指定的目录下,就是临时文件夹里,生成一个类似于hsperfdata_User的文件夹,这个文件夹里(在Linux中为/tmp/hsperfdata_{userName}/),有几个文件,名字就是java进程的pid,因此列出当前运行的java进程,只是把这个目录里的文件名列一下而已。 至于系统的参数什么,就可以解析这几个文件获得。 window系统显示如下:
VM.version 命令:jcmd PID VM.version
| ||
-q:只输出进程 ID | jps -q 参数 -q 只输出进程ID,而不显示出类的名称 | |
-m:输出传入 main 方法的参数 | jps -m 参数 -m 可以输出传递给 Java进程(main 方法)的参数。 | |
-l:输出完全的包名,应用主类名,jar的完全路径名 | jps -l 参数 -l 可以输出主函数的完整路径(类的全路径)。 | |
-v:输出jvm参数 | jps -v 参数 -v 可以显示传递给 Java虚拟机的参数。
| |
-V:输出通过flag文件传递到JVM中的参数 |
|
jmap命令jmap是一个多功能的命令。它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列。
参数: | |
命令:jmap pid
| 使用不带选项参数的jmap打印共享对象映射,将会打印目标虚拟机中加载的每个共享对象的起始地址、映射大小以及共享对象文件的路径全称。这与Solaris的pmap工具比较相似。
|
命令:jmap -heap pid 打印一个堆的摘要信息,包括使用的GC算法、堆配置信息和各内存区域内存使用信息 | C:\Users\jjs>jmap-heap 5932 |
命令:jmap -histo:live pid | 其中包括每个Java类、对象数量、内存大小(单位:字节)、完全限定的类名。打印的虚拟机内部的类名称将会带有一个’*’前缀。如果指定了live子选项,则只计算活动的对象。
|
命令:jmap -clstats pid
| -clstats是-permstat的替代方案,在JDK8之前,-permstat用来打印类加载器的数据
|
命令:jmap -finalizerinfo pid 描述:打印等待终结的对象信息 | Numberof objects pending for finalization: 0 说明当前F-QUEUE队列中并没有等待Fializer线程执行final |
命令:jmap -dump:format=b,file=heapdump.phrof pid 描述:生成堆转储快照dump文件。 | 以hprof二进制格式转储Java堆到指定filename的文件中。live子选项是可选的。如果指定了live子选项,堆中只有活动的对象会被转储。想要浏览heap dump,你可以使用jhat(Java堆分析工具)读取生成的文件。 这个命令执行,JVM会将整个heap的信息dump写入到一个文件,heap如果比较大的话,就会导致这个过程比较耗时,并且执行的过程中为了保证dump的信息是可靠的,所以会暂停应用, 线上系统慎用。
|
jinfojinfo用法 pid 对应jvm的进程id | |
jinfo pid | |
命令:jinfo -flag name pid | 使用该命令,可以查看指定的 jvm 参数的值。如:查看当前 jvm 进程是否开启打印 GC 日志。 |
命令:jinfo -flag [+|-]name pid 描述:开启或者关闭对应名称的参数 | 使用 jinfo 可以在不重启虚拟机的情况下,可以动态的修改 jvm 的参数。尤其在线上的环境特别有用。 使用如下:
|
命令:jinfo -flag name=value pid | 如果是设置 value值,则需要使用name=value 的形式。 使用如下: 注意事项 : jinfo虽然可以在java程序运行时动态地修改虚拟机参数,但并不是所有的参数都支持动态修改 |
命令:jinfo -flags pid 描述:输出全部的参数 |
|
-sysprops 命令:jinfo -sysprops pid | |
jstatJVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heapsize和垃圾回收状况的监控。 | ||
-class显示ClassLoad的相关信息; | | Loaded: 已经装载的类的数量 |
-compiler显示JIT编译的相关信息; | Compiled:编译任务执行数量 | |
-gc显示和gc相关的堆信息; | S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
| |
-gccapacity显示各个代的容量以及使用情况; | NGCMN:年轻代(young)中初始化(最小)的大小(字节) | |
-gcmetacapacity显示metaspace的大小 | MCMN:最小元数据容量 | |
-gcnew显示新生代信息; | S0C :年轻代中第一个survivor(幸存区)的容量 (字节) | |
-gcnewcapacity显示新生代大小和使用情况; | NGCMN:年轻代(young)中初始化(最小)的大小(字节) | |
-gcold old代对象的信息 | MC :metaspace(元空间)的容量 (字节) | |
old代对象的信息及其占用量 | OGCMN:old代中初始化(最小)的大小 (字节) | |
- gcutil 统计gc信息 |
S0 :年轻代中第一个survivor(幸存区)已使用的占当前容量百分比 | |
-gccause 显示垃圾回收的相关信息(通-gcutil),同时显示最后一次或当前正在发生的垃圾回收的诱因。 | LGCC:最后一次GC原因 GCC:当前GC原因(No GC为当前没有执行GC)
| |
-printcompilation 当前VM执行的信息。 |
Compiled:编译任务的数目 |
jcmd命令格式
| |
命令:jcmd -l |
这三个命令的效果是一样的 查看性能统计 命令:jcmd pid PerfCounter.print |
命令:jcmd pid PerfCounter.print
| |
列出当前运行的 java 进程可以执行的操作 命令:jcmd PID help | |
查看具体命令的选项 如果想查看命令的选项,比如想查看 JFR.dump 命令选项,可以通过如下命令: | |
1.JRF相关命令 JRF 功能跟 jmc.exe 工具的飞行记录器的功能一样的。 |
jmc.exe 显示的提示
|
VM.uptime 命令:jcmd PID VM.uptime | |
GC.class_histogram 命令:jcmd PID GC.class_histogram |
|
这里和jmap -histo pid的效果是一样的 Thread.print 命令:jcmd PID Thread.print | |
该命令同 jstack命令。 GC.heap_dump 命令:jcmd PID GC.heap_dump FILE_NAME | -dump:format=b,file=heapdump.phrofpid 效果一样。 注意:如果只指定文件名,默认会生成在启动 JVM 的目录里。 |
VM.system_properties 命令:jcmd PID VM.system_properties |
|
VM.flags 命令:jcmd PID VM.flags | |
VM.command_line 命令:jcmd PID VM.command_line | |
GC.run_finalization 命令:jcmd PID GC.run_finalization | 执行一次finalization操作,相当于执行java.lang.System.runFinalization() |
GC.run 命令:jcmd PID GC.run | 告诉垃圾收集器打算进行垃圾收集,而垃圾收集器进不进行收集是不确定的。 |
PerfCounter.print 命令:jcmd PID PerfCounter.print | |
VM.version 命令:jcmd PID VM.version |
|