好程式設計師Java培訓分享Java效能常見命令有哪些
好程式設計師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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師Java培訓分享Java程式設計技巧程式設計師Java
- 好程式設計師Java培訓分享學習Java需要哪些基礎程式設計師Java
- 好程式設計師Java培訓分享Java常見排序演算法之插入排序程式設計師Java排序演算法
- 好程式設計師Java培訓分享Java多執行緒常見面試問題程式設計師Java執行緒面試
- 好程式設計師Java培訓分享Java程式設計師技能提升指南程式設計師Java
- 好程式設計師Java培訓分享SpringBoot -YAML程式設計師JavaSpring BootYAML
- 好程式設計師Java培訓分享如何快速入門Java程式設計程式設計師Java
- 好程式設計師Java培訓分享Java之反射技術程式設計師Java反射
- 好程式設計師Java培訓分享如何快速入門Java程式設計師Java
- 好程式設計師Java培訓分享Java包是什麼?程式設計師Java
- 好程式設計師Java培訓分享Java多執行緒程式設計師Java執行緒
- 好程式設計師Java培訓分享maven-概述程式設計師JavaMaven
- 好程式設計師Java培訓分享BigDecimal的用法程式設計師JavaDecimal
- 好程式設計師Java培訓分享零基礎學Java能行嗎 有哪些難點程式設計師Java
- 好程式設計師Java培訓分享Java程式設計師常用的工具類庫程式設計師Java
- 好程式設計師Java培訓分享20個Java程式設計師基礎題程式設計師Java
- 好程式設計師Java培訓分享Java EE與Java的區別程式設計師Java
- 好程式設計師Java培訓分享學Java程式設計要注意什麼程式設計師Java
- 好程式設計師Java培訓分享Java和HTML的區別?程式設計師JavaHTML
- 好程式設計師Java培訓分享Java物件導向概念解析程式設計師Java物件
- 好程式設計師Java培訓分享Java初學者必讀程式設計師Java
- 好程式設計師Java培訓分享SpringBoot -啟動流程程式設計師JavaSpring Boot
- 好程式設計師Java培訓分享For迴圈詳解程式設計師Java
- 好程式設計師Java培訓分享Spring Ioc的原理程式設計師JavaSpring
- 好程式設計師Java培訓分享SpringBoot入門篇程式設計師JavaSpring Boot
- 好程式設計師雲端計算培訓分享Linux Shell常見命令總結大全程式設計師Linux
- 好程式設計師Java培訓分享本地快取如何設計程式設計師Java快取
- 好程式設計師Java培訓分享-簡單的效能最佳化技巧程式設計師Java
- 好程式設計師Java教程分享:Java工程師常見面試題程式設計師Java工程師面試題
- 好程式設計師Java培訓分享Java處理異常的幾個小知識程式設計師Java
- Java程式設計師技術培訓需要培訓哪些?Java程式設計師
- 好程式設計師Java培訓分享Java面試題集合篇一程式設計師Java面試題
- 好程式設計師Java培訓分享Java面試題集合篇二程式設計師Java面試題
- 好程式設計師Java培訓分享面試Java的注意事項程式設計師Java面試
- 好程式設計師Java培訓分享Java中級面試題合集程式設計師Java面試題
- 好程式設計師Java培訓分享Java集合的兩種排序方法程式設計師Java排序
- 好程式設計師Java培訓分享Java讀寫Properties配置檔案程式設計師Java
- 好程式設計師Java培訓分享學Java需要什麼基礎?程式設計師Java