JProfiler-----入門使用

JProfiler的入門使用,流程介紹

JProfiler是安裝在IDEA的插件,用來排查OOM(OutOfMemoryError)錯誤。生成Dump內存快照。
當程序發生內存溢出時,快速定位內存泄露位置。
注意:JProfiler有服務器端和客戶端兩個部分,都要安裝,才能夠正常測試使用。

1.首先寫一段內存溢出的代碼。

import java.util.ArrayList;

//Dump文件 -Xms1m -Xmx1m -XX:+HeapDumpOnOutOfMemoryError
public class DemoNative {

    public static void main(String[] args) {
        byte[] arr = new byte[1*1024*1024];
        ArrayList<Object> arrayList = new ArrayList<>();
        int count = 0;
        try {
            while (true){
                arrayList.add(new DemoNative());
                count = count +1;
            }
        }catch (Error e){
            System.out.println("count"+count);
            e.printStackTrace();
        }
    }
}

此時代碼是無法正常執行,會報OOM的錯誤。

2.在VM options中進行配置。

-Xms1m -Xmx1m -XX:+HeapDumpOnOutOfMemoryError:設置內存初始大小爲1m,內存最大大小爲1M,並且打印Dump快照信息。
在這裏插入圖片描述此時的程序執行結果:
在這裏插入圖片描述

3.打開Dump文件

在這裏插入圖片描述
打開目錄後,往上層目錄進行查找:找到和控制檯輸出相同的文件名。
在這裏插入圖片描述

4. 雙擊打開該文件,會自動進入JProfiler軟件。

在這裏插入圖片描述其中標紅線的是比較常用的選擇。
Classes:
Biggest Object:最大的對象
References:它的引用
Time:佔用時間的分析
Heap Walker:堆
CPU views:CPU相關
Thread:線程相關

5.分析

根據Class可以定位到對應的類對象。
在這裏插入圖片描述
由於現在的沒有跑其他的線程,看main線程中就能夠定位到發生問題的具體代碼行數。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章