jvm常用命名及参数总结

一、jvm工具
    

    1.jps:虚拟机进程状况工具(JVM Process Status Tool)


        a).命令格式: jps [options]  [hostid]
        b).-l:输出主类全名或jar路径
           -q:只输出LVMID
           -m: 输出jvm启动时传递给main()的参数
           -v: 输出jvm启动时显示指定的jvm参数

 

    2.jstat:虚拟机统计信息监视工具(JVM statistics Monitoring)


        a).显示出虚拟机中的类装载、内存、垃圾收集器、JIT编译等运行数据
        b).命令格式: jstat [option vmid [interval[s|ms] [count] ] ]
        c).参数interval和count代表查询间隔和次数,如果省略,说明查询一次
        d).举例:假如没250毫秒查询一次进程2764垃圾收集状况,共查询20次
                jstat  -gc 2764 250 20 
        e).选项option,代表需要查询的虚拟机的信息。主要分为3类:类装载、垃圾收集、运行期编译状况
        f).      
        选项    作用
        -class             监视类装载、卸载数量、总空间以及类装载所耗费的时间
        -gc                 监视Java堆状况,包括Eden区、两个Survivor区、老年代、永久代等的容量、     已用空间、GC时间合计等信息 
        -gccapacity          监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间 
        -gcutil              监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比
        -gccause          与 -gcutil 功能一样,但是会额外输出导致上一次GC产生的原因
        -gcnew              监视新生代GC状况
        -gcnewcapacity      监视内容与 -gcnew 基本相同,输出主要关注使用到的最大、最小空间
        -gcold              监视老年代GC状况
        -gcoldcapacity      监视内容与 -gcold 基本相同,输出主要关注使用到的最大、最小空间
        -gcpermcapacity      输出永久代使用到的最大、最小空间
        -compiler           输出JIT编译器编译过的方法、耗时等信息 
        -printcompilation     输出已经被JIT编译的方法 
            

    3.jmap:java内存印象工具(JVM Memory Map)


        a).命令用于生成heap dump文件,如果不使用这个命令,还阔以使用-XX:    +HeapDumpOnOutOfMemoryError参数来让虚拟机出现OOM的时候·自动生成dump文件。 jmap不仅能生成dump文件,还阔以查询finalize执行队列、Java堆和永久代的详细信息,如当前使用率、当前使用的是哪种收集器等。
        b).命令格式:jmap  [option] vmid
        c).选项    作用
           -dump    生成堆转储快照
           -finalizerinfo     显示在F-Queue队列等待Finalizer线程执行finalizer方法的对象
           -heap    显示Java堆详细信息
           -histo    显示堆中对象的统计信息
           -permstat    以ClassLoader为统计口径显示永久代内存状态。只在Linux/Solaris平台下有效
           -F    当-dump没有响应时,强制生成dump快照


    4.jhat虚拟机堆转储快照分析工具(JVM head Analysis Tool)


        a).命令是与jmap搭配使用,用来分析jmap生成的dump,jhat内置了一个微型的HTTP/HTML服务器,生成dump的分析结果后,可以在浏览器中查看。在此要注意,一般不会直接在服务器上进行分析,因为jhat是一个耗时并且耗费硬件资源的过程,一般把服务器生成的dump文件复制到本地或其他机器上进行分析。
        b).命令格式:jhat [option] [dumpfile]
        c).选项    作用
-stack    false|true 关闭对象分配调用栈跟踪(tracking object allocation call stack)。 如果分配位置信息在堆转储中不可用. 则必须将此标志设置为 false. 默认值为 true.

-refs    false|true 关闭对象引用跟踪(tracking of references to objects)。 默认值为 true. 默认情况下, 返回的指针是指向其他特定对象的对象,如反向链接或输入引用(referrers or incoming references), 会统计/计算堆中的所有对象。

-port    port-number 设置 jhat HTTP server 的端口号. 默认值 7000.

-exclude    exclude-file 指定对象查询时需要排除的数据成员列表文件(a file that lists data members that should be excluded from the reachable objects query)。 例如, 如果文件列列出了 java.lang.String.value , 那么当从某个特定对象 Object o 计算可达的对象列表时, 引用路径涉及 java.lang.String.value 的都会被排除。

-baseline    exclude-file 指定一个基准堆转储(baseline heap dump)。 在两个 heap dumps 中有相同 object ID 的对象会被标记为不是新的(marked as not being new). 其他对象被标记为新的(new). 在比较两个不同的堆转储时很有用.

-debug    int 设置 debug 级别. 0 表示不输出调试信息。 值越大则表示输出更详细的 debug 信息.

-version    启动后只显示版本信息就退出

-J< flag >    因为 jhat 命令实际上会启动一个JVM来执行, 通过 -J 可以在启动JVM时传入一些启动参数. 例如, -J-Xmx512m 则指定运行 jhat 的Java虚拟机使用的最大堆内存为 512 MB. 如果需要使用多个JVM启动参数,则传入多个 -Jxxxxxx.      

 

    5.jstack:java堆栈跟踪工具


        a).命令格式:  jstack   [option] vmid
        b).参数选项:-F:当正常输出请求不被响应时,强制输出线程堆栈。
                                                        -l :除堆栈外,显示关于锁的附加信息
                                                        -m:如果调用到本地方法的话,可以显示c/c++的堆栈

 

    6.jinfo:java配置信息工具(JVM Configuration info)


        a).实时查看和调整虚拟机运行参数,之前的jps -v口令只能查看到显示指定的参数,如果想要查看未被显示指定的参数的值就要使用jinfo口令。
        b).命令格式: jinfo [option] pid
        c).选项:-flag :输出指定args参数的值
                                        -flags:不需要args参数,输出所以jvm参数的值
                                        -sysprops:输出系统属性,等同于System.getProperties()

    实现:这些命令行工具大多是jdk/lib/tools.jar类库的包装。主要代码是早tool类库中实现

二、调优分析内容
    
    1.运行日志
    2.异常堆栈
    3.GC日志
    4.线程快照(threaddump/javacore文件)、堆转储快照(heapdump/hprof文件)等。


 

你可能感兴趣的:(jvm)