什麼是Jprofile
JProfiler是由ej-technologies GmbH公司開發的一款效能瓶頸分析工具(該公司還開發部署工具)。
其特點:
- 使用方便
- 介面操作友好
- 對被分析的應用影響小
- CPU,Thread,Memory分析功能尤其強大
- 支援對jdbc,noSql, jsp, servlet, socket等進行分析
- 支援多種模式(離線,線上)的分析
這裡主要是作為分析 Dump 記憶體檔案,例如以下程式碼
//Dump;
public class Test5 {
Byte[] array = new Byte[1024*1024];//1MB
public static void main(String[] args) {
ArrayList<Test5> list = new ArrayList<>();
int count = 0;
//Throwable
//Exception
//Error
try {
while (true) {
list.add(new Test5());
count = count +1;
}
}catch (Error e){
System.out.println(count);
e.printStackTrace();
}
}
}
一直迴圈在 list 集合裡新增新物件,新物件都會佔用1M的記憶體,會造成堆記憶體溢位:java.lang.OutOfMemoryError
,由於堆記憶體溢位是Error
,不是Exception
,需要用Error來捕獲,在實際開發中有時很難檢查出錯誤,需要使用Jprofile來分析。
- 先配置 Java 虛擬機器,在 VM Options 中新增配置
-Xms1m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError
這裡是將 JVM 虛擬機器初始化總記憶體大小為1M,最大記憶體為8M,然後將堆記憶體溢位匯出為Dump檔案。
用 Jprofile 開啟
可以看到記憶體佔用資訊
具體程式碼問題
下載
Plugins 中,搜尋下載安裝Jprofile
官網下載
官網地址:Jprofile 官網地址
序列號
JProfiler11 序列號
L-J11-Everyone#speedzodiac-327a9wrs5dxvz#463a59
A-J11-Everyone#admin-3v7hg353d6idd5#9b4
本作品採用《CC 協議》,轉載必須註明作者和本文連結