阿里P7詳細解答JVM性能調優之監控工具


javap 和 javac

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

寫在最后:歡迎留言討論,加關注,持續更新!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM