尚硅谷-JVM-性能監控與調優篇(P302~P381)

第二篇字節碼和類加載篇感覺用處不大,暫時跳過,直接開始性能監控和調優。但是是免費篇,講的都是寫工具、參數,實際案例比較少。

視頻地址:

https://www.bilibili.com/video/BV1PJ411n7xZ?p=381&vd_source=510ec700814c4e5dc4c4fda8f06c10e8

csdn csdn csdn csdn csdn


🔥1.性能監控與調優篇

​ 分爲性能監控(發現問題)、分析(排查問題)和調優(解決問題):最終目的還是要減少GC次數,保證系統性能

1.1. 性能監控

1.1.1 命令行監控
1.1.1.1 jps

java process status

-- 查看Hotspot虛擬機中正在運行的進程: pid 進程名
C:\Users\EDY>jps
18736 Jps
26500 RemoteMavenServer36
14712 RemoteMavenServer36
21452 Launcher
39372
46956 Launcher
1.1.1.2 jstat

監視虛擬機中運行狀態:類加載,內存,垃圾收集等運行數據

C:\Users\EDY>jstat -class 26500
Loaded  Bytes  Unloaded  Bytes     Time
  5740 10533.0       25    25.2       2.23
1.1.1.3 jinfo

查看、調節虛擬機配置參數信息

--查看進程參數,也可以修改
C:\Users\EDY>jinfo -flags 42872

--增加參數
C:\Users\EDY>jinfo -flag +PrintGCDetails 42872
1.1.1.4 JVM默認值
--JVM啓動默認值
C:\Users\EDY>java -XX:+PrintFlagsInitial >> 1.txt
--JVM最終默認值,可能程序會修改
C:\Users\EDY>java -XX:+PrintFlagsFinal >> 1.txt
1.1.1.5 Jmap

​ 導出內存映像文件和內存使用情況

1.1.2 GUI界面

​ GUI算是對命令行的升級。分爲JDK自帶和第三方工具

1.1.2.1 Jconsole
1.1.2.1 JvisualVM

​ dump文件:分析某個時刻內存、類個數、對象個數等信息情況

​ 抽樣器:查看哪個線程佔用CPU和內存過高的情況

.hprof:就是dump裏面對象個數情況

​ 淺堆:對象所消耗內存,不包含內部引用對象大小

​ 深堆:只能通過一個對象直接或間接訪問到所有對象的淺堆之和(比如A對象中有多個對象,對象下面還有對象,A中除去多個對象後的大小就是淺堆,整個A對象包含多個對象下面的對象就是深堆,)

​ 實際對象大小:對象中所有對象之和

image-20220728101413251

1.1.3 JProfile(略)

​ 就是和idea整合的內存分析工具

1.1.4 Arthas(略)

1.2 性能分析

1.2.1 內存泄漏
1.2.1.1 static集合

​ 長生命週期引用持有短生命週期對象導致不能被回收,就會導致內存泄漏

    //statics生命週期和JVM一致, 程序結束之前不能被釋放
    static List list = new ArrayList();
    public static void staticCollection(){
        Object o = new Object();
        list.add(o);
    }
1.2.1.2 單例模式

單例對象持有外部對象引用

1.2.1.3 外部連接

​ 數據庫連接,網絡連接,IO連接,連接完了之後要關閉

1.2.1.4 變量作用域

能用局部變量的不要用全局變量

1.2.1.5 hashCode值

set.add一個對象後再把這個對象屬性修改add,就會有2個相同屬性的對象(因爲剛開始計算hashcode是一個值,修改屬性就會重新計算hashcode,因爲底層是map,map存儲元素就是拿hashcode來計算的),前一個對象就會造成內存泄漏,所以對於集合存了元素後,就不要再修改元素裏面值了,類似redis和mysql關係

1.3 性能調優

1.3.1 JVM參數設置(略)

第一篇講了很多了,後面用到了在看。分爲-X(穩定)與-XX(不怎麼穩定)

1.3.2 GC日誌分析(略)

1.4 個人小結

總結,總的來說,本章分爲一些命令行監控、GUI監控、第三方工具監控、JVM參數設置和日誌監控,來分析代碼寫的是不是有問題,服務器配置是不是不行之類的。

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