好程式設計師Java培訓分享Java效能常見命令有哪些

好程式設計師發表於2020-07-13

  好程式設計師Java 培訓分享 Java 效能常見命令有哪些 效能最佳化一向是後端服務最佳化的重點,但是線上效能故障問題不是經常出現,或者受限於業務產品,根本就沒辦法出現效能問題,包括筆者自己遇到的效能問題也不多,所以為了提前儲備知識,當出現問題的時候不會手忙腳亂。

   既然是定位問題,肯定是需要藉助工具,我們先了解下需要哪些工具可以幫忙定位問題。

   top 命令

   top 命令是我們最常用的 Linux 命令之一,它可以實時的顯示當前正在執行的程式的 CPU 使用率,記憶體使用率等系統資訊。 top -Hp pid 可以檢視執行緒的系統資源使用情況。

   vmstat 命令

   vmstat 是一個指定週期和採集次數的虛擬記憶體檢測工具,可以統計記憶體, CPU swap 的使用情況,它還有一個重要的常用功能,用來觀察程式的上下文切換。欄位說明如下 :

   r: 執行佇列中程式數量 ( 當數量大於 CPU 核數表示有阻塞的執行緒 )

   b: 等待 IO 的程式數量

   swpd: 使用虛擬記憶體大小

   free: 空閒實體記憶體大小

   buff: 用作緩衝的記憶體大小 ( 記憶體和硬碟的緩衝區 )

   cache: 用作快取的記憶體大小 (CPU 和記憶體之間的緩衝區 )

   si: 每秒從交換區寫到記憶體的大小,由磁碟調入記憶體

   so: 每秒寫入交換區的記憶體大小,由記憶體調入磁碟

   bi: 每秒讀取的塊數

   bo: 每秒寫入的塊數

   in: 每秒中斷數,包括時鐘中斷。

   cs: 每秒上下文切換數。

   us: 使用者程式執行時間百分比 (user time)

   sy: 核心系統程式執行時間百分比 (system time)

   wa: IO 等待時間百分比

   id: 空閒時間百分比

   pidstat 命令

   pidstat Sysstat 中的一個元件,也是一款功能強大的效能監測工具, top vmstat 兩個命令都是監測程式的記憶體、 CPU 以及 I/O 使用情況,而 pidstat 命令可以檢測到執行緒級別的。 pidstat 命令執行緒切換欄位說明如下:

   UID :被監控任務的真實使用者 ID

   TGID :執行緒組 ID

   TID :執行緒 ID

   cswch/s :主動切換上下文次數,這裡是因為資源阻塞而切換執行緒,比如鎖等待等情況。

   nvcswch/s :被動切換上下文次數,這裡指 CPU 排程切換了執行緒。

   jstack 命令

   jstack JDK 工具命令,它是一種執行緒堆疊分析工具,最常用的功能就是使用 jstack pid 命令檢視執行緒的堆疊資訊,也經常用來排除死鎖情況。

   jstat 命令

   它可以檢測Java 程式執行的實時情況,包括堆記憶體資訊和垃圾回收資訊,我們常常用來檢視程式垃圾回收情況。常用的命令是 jstat -gc pid 。資訊欄位說明如下:

   S0C :年輕代中 To Survivor 的容量 ( 單位 KB);

   S1C :年輕代中 From Survivor 的容量 ( 單位 KB);

   S0U :年輕代中 To Survivor 目前已使用空間 ( 單位 KB);

   S1U :年輕代中 From Survivor 目前已使用空間 ( 單位 KB);

   EC :年輕代中 Eden 的容量 ( 單位 KB);

   EU :年輕代中 Eden 目前已使用空間 ( 單位 KB);

   OC :老年代的容量 ( 單位 KB);

   OU :老年代目前已使用空間 ( 單位 KB);

   MC :元空間的容量 ( 單位 KB);

   MU :元空間目前已使用空間 ( 單位 KB);

   YGC :從應用程式啟動到取樣時年輕代中 gc 次數 ;

   YGCT :從應用程式啟動到取樣時年輕代中 gc 所用時間 (s);

   FGC :從應用程式啟動到取樣時 老年代 (Full Gc)gc 次數 ;

   FGCT :從應用程式啟動到取樣時 老年代代 (Full Gc)gc 所用時間 (s);

   GCT :從應用程式啟動到取樣時 gc 用的總時間 (s)

   jmap 命令

   jmap 也是 JDK 工具命令,他可以檢視堆記憶體的初始化資訊以及堆記憶體的使用情況,還可以生成 dump 檔案來進行詳細分析。檢視堆記憶體情況命令 jmap -heap pid

   mat 記憶體工具

   MAT(Memory Analyzer Tool) 工具是 eclipse 的一個外掛 (MAT 也可以單獨使用 ) ,它分析大記憶體的 dump 檔案時,可以非常直觀的看到各個物件在堆空間中所佔用的記憶體大小、類例項數量、物件引用關係、利用 OQL 物件查詢,以及可以很方便的找出物件 GC Roots 的相關資訊。

   idea 中也有這麼一個外掛,就是 JProfiler


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2704174/,如需轉載,請註明出處,否則將追究法律責任。

相關文章