JVM学习之常用命令

225 阅读2分钟

一、jvm命令行工具

1、jps

  • 查看运行的java进程

2、jstat

  • 查看jvm的统计信息
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
-t 程序开始到目前的执行时间
-h 每个几条数据打印表头
<interval>每隔多长时间执行一次命令
<count>指定查询的次数

-option:
-gc 查看jvm的gc情况

3、jinfo

  • 查看、修改jvm配置的参数
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

4、PrintFlagsInitial、PrintFlagsFinal

  • PrintFlagInitial:打印初始参数值
  • PrintFlagFinal:打印修改后的参数值
java -XX:+PrintFlagsFinal 

5、jmap

  • 用来生成dump文件:jmap -dump:format=b,file=heap.bin pid
  • 显示运行时堆的概要情况:jmap -heap pid
Usage:
    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)

where <option> is one of:
    <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 <file>
                         Example: jmap -dump:live,format=b,file=heap.bin <pid>
    -F                   force. Use with -dump:<dump-options> <pid> or -histo
                         to force a heap dump or histogram when <pid> does not
                         respond. The "live" suboption is not supported
                         in this mode.
    -h | -help           to print this help message
    -J<flag>             to pass <flag> directly to the runtime system

  • 内存溢出时自动生成dump文件的配置
-XX:HeapDumpOutOfMemoryError
-XX:HeapDumpPath=D:\m.hprof

6、jstack

  • 栈快照,线程快照
Usage:
    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)

Options:
    -F  to force a thread dump. Use when jstack <pid> 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

7、jcmd

  • 一个多功能的命令,具体命令功能如下
jcmd 532 help
532:
The following commands are available:
JFR.stop
JFR.start
JFR.dump
JFR.check
VM.native_memory
VM.check_commercial_features
VM.unlock_commercial_features
ManagementAgent.stop
ManagementAgent.start_local
ManagementAgent.start
GC.rotate_log
Thread.print
GC.class_stats
GC.class_histogram
GC.heap_dump
GC.run_finalization
GC.run
VM.uptime
VM.flags
VM.system_properties
VM.command_line
VM.version
help