JVM调优之监控工具

Posted jc-0527

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM调优之监控工具相关的知识,希望对你有一定的参考价值。

    • javac -verbose 类名.java
    • java -verbose 类名
    • javap -c 类名
    • javap -verbose 类名

    JAVAP -HELP

    用法: javap

    其中, 可能的选项包括:

    -help –help -? 输出此用法消息

    -version 版本信息

    -v -verbose 输出附加信息

    -l 输出行号和本地变量表

    -public 仅显示公共类和成员

    -protected 显示受保护的/公共类和成员

    -package 显示程序包/受保护的/公共类

    和成员 (默认)

    -p -private 显示所有类和成员

    -c 对代码进行反汇编

    -s 输出内部类型签名

    -sysinfo 显示正在处理的类的

    系统信息 (路径, 大小, 日期, MD5 散列)

    -constants 显示最终常量

    -classpath 指定查找用户类文件的位置

    -cp 指定查找用户类文件的位置

    -bootclasspath 覆盖引导类文件的位置


    JAVAC -HELP

    用法: javac

    其中, 可能的选项包括:

    -g 生成所有调试信息

    -g:none 不生成任何调试信息

    -g:{lines,vars,source} 只生成某些调试信息

    -nowarn 不生成任何警告

    -verbose 输出有关编译器正在执行的操作的消息

    -deprecation 输出使用已过时的 API 的源位置

    -classpath <路径> 指定查找用户类文件和注释处理程序的位置

    -cp <路径> 指定查找用户类文件和注释处理程序的位置

    -sourcepath <路径> 指定查找输入源文件的位置

    -bootclasspath <路径> 覆盖引导类文件的位置

    -extdirs <目录> 覆盖所安装扩展的位置

    -endorseddirs <目录> 覆盖签名的标准路径的位置

    -proc:{none,only} 控制是否执行注释处理和/或编译。

    -processor [,,…] 要运行的注释处理程序的名称; 绕过默认的搜索进程

    -processorpath <路径> 指定查找注释处理程序的位置

    -parameters 生成元数据以用于方法参数的反射

    -d <目录> 指定放置生成的类文件的位置

    -s <目录> 指定放置生成的源文件的位置

    -h <目录> 指定放置生成的本机标头文件的位置

    -implicit:{none,class} 指定是否为隐式引用文件生成类文件

    -encoding <编码> 指定源文件使用的字符编码

    -source <发行版> 提供与指定发行版的源兼容性

    -target <发行版> 生成特定 VM 版本的类文件

    -profile <配置文件> 请确保使用的 API 在指定的配置文件中可用

    -version 版本信息

    -help 输出标准选项的提要

    -A关键字[=值] 传递给注释处理程序的选项

    -X 输出非标准选项的提要

    -J<标记> 直接将 <标记> 传递给运行时系统

    -Werror 出现警告时终止编译

    @<文件名> 从文件读取选项和文件名


    jps

    用来查看基于HotSpot的JVM里面中,所有具有访问权限的Java进程的具体状态, 包括进程ID,进程启动的路径及启动参数等等,与unix上的ps类似,只不过jps是用来显示java进程,可以把jps理解为ps的一个子集。

    使用jps时,如果没有指定hostid,它只会显示本地环境中所有的Java进程;如果指定了hostid,它就会显示指定hostid上面的java进程,不过这需要远程服务上开启了jstatd服务。

    JPS -HELP

    usage: jps [-help]

    jps [-q] [-mlvV] [<hostid>]

    Definitions:

    <hostid>: <hostname>[:<port>]

    -q:忽略输出的类名、Jar名以及传递给main方法的参数,只输出pid。

    -m:输出传递给main方法的参数,如果是内嵌的JVM则输出为null。

    -l:输出完全的包名,应用主类名,jar的完全路径名

    -v:输出传给jvm的参数

    -V:输出通过标记的文件传递给JVM的参数(.hotspotrc文件,或者是通过参数-XX:Flags=指定的文件)。

    -J 用于传递jvm选项到由javac调用的java加载器中,例如,“-J-Xms48m”将把启动内存设置为48M,使用-J选项可以非常方便的向基于Java的开发的底层虚拟机应用程序传递参数。


    jstack

    jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项”-J-d64”,Windows的jstack使用方式只支持以下的这种方式:

    jstack [-l] pid

    如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。

    JSTACK -HELP

    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] [[email protected]]<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)(当’jstack [-l] pid’没有相应的时候强制打印栈信息)
    -m to print both java and native frames (mixed mode)(打印java和native c/c++框架的所有栈信息.)
    -l long listing. Prints additional information about locks (长列表. 打印关于锁的附加信息,例如属于java.util.concurrent的ownable synchronizers列表.)
    -h or -help to print this help message (打印帮助信息)

    jstat

    Jstat 用于监控基于HotSpot的JVM,对其堆的使用情况进行实时的命令行的统计,使用jstat我们可以对指定的JVM做如下监控:

    • 类的加载及卸载情况
    • 查看新生代、老生代及持久代的容量及使用情况
    • 查看新生代、老生代及持久代的垃圾收集情况,包括垃圾回收的次数及垃圾回收所占用的时间
    • 查看新生代中Eden区及Survior区中容量及分配情况等

    jstat -help

    Usage:

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

    Definitions:

    >

    Virtual Machine Identifier. A vmid takes

    the following form:

    [@[:]]

    Where is the local vm identifier for the target

    Java virtual machine, typically a process id; is

    the name of the host running the target Java virtual machine;

    and 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.

    Number of samples between header lines.

    Sampling interval. The following forms are allowed:

    [“ms”|”s”]

    Where is an integer and the suffix specifies the units as

    milliseconds(“ms”) or seconds(“s”). The default units are “ms”.

    Number of samples to take before terminating.

    -J Pass directly to the runtime system.



















以上是关于JVM调优之监控工具的主要内容,如果未能解决你的问题,请参考以下文章

JVM性能调优监控工具专题一:JVM自带性能调优工具

JVM调优之选择步骤

JVM调优之jstack找出最耗cpu的线程并定位代码

JVM调优之jstack找出最耗cpu的线程并定位代码

Spark性能调优之JVM调优

JVM调优之jstack找出最耗cpu的线程并定位代码