java程序員除了編寫業務代碼以外,特別是項目上線以後,更須要關注的是系統的性能表現,這個時候就須要瞭解一下jvm的性能表現了,能夠藉助於java虛擬機自帶的一些分析工具,主要有三個經常使用的命令。java
這個命令是用來查看當前系統中jvm進程 heap dump的狀況,包括對象的數量,對象所佔內存的大小程序員
使用方式:先使用jps查看進程idjvm
使用 jmap -dump:live,file=b.map 22467 將live進程生成java堆轉儲快照工具
使用 jmap -heap PID 生成java堆的詳細信息性能
使用 jmap -histo PID 生成java堆中對象的相關信息,包含數量以及佔用的空間大小spa
主要是用來監控 heap size 和 jvm垃圾回收狀況,尤爲是gc狀況的監控,若是老年代發生full gc,那麼極可能會致使內存泄漏的可能性線程
能夠看到新生代survivor S0, survivor S1 heap上的空間 使用百分比,堆中新生代Eden 的空間使用百分比,老年代Old 空間的使用百分比,內存的使用百分比,新生代Yong gc 的統計次數,新生代gc 花費的時間,full gc 的次數,花費的時間,當前進程總的gc時間,這裏要注意一點,full gc很具備表明性,full gc次數 和時間 指標很能顯示系統性能問題,這兩個指標很大,很大程度上說明了程序中有問題,垃圾一直回收不掉3d
先使用 top 查看系統中消耗cpu比較多的進程,而後使用 top -p PID -H來查看當前進程中比較消耗cpu的線程,拿到消耗cpu比較高的線程pid,先轉換成16進制的,最後使用jstack pid|grep 16進制的線程id對象
jstack -pid能夠用來分析進程狀況blog