1. 程式人生 > >JVM調優之監控工具

JVM調優之監控工具

protect 操作 虛擬 遠程調試 -xms thread 行號 垃圾 time

    • 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] [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)(當’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調優之監控工具