亚洲欧洲国产欧美一区精品,激情五月亚洲色五月,最新精品国偷自产在线婷婷,欧美婷婷丁香五月天社区

      java

      當(dāng)前位置:中華考試網(wǎng) >> java >> java問答庫 >> 文章內(nèi)容

      Java性能常見命令有哪些?

      來源:中華考試網(wǎng)  [2020年10月20日]  【

        性能優(yōu)化一向是后端服務(wù)優(yōu)化的重點(diǎn),但是線上性能故障問題不是經(jīng)常出現(xiàn),或者受限于業(yè)務(wù)產(chǎn)品,根本就沒辦法出現(xiàn)性能問題,包括筆者自己遇到的性能問題也不多,所以為了提前儲備知識,當(dāng)出現(xiàn)問題的時候不會手忙腳亂,我們本篇文章來模擬下常見的幾個Java性能故障,來學(xué)習(xí)怎么去分析和定位。

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

        top命令

        top命令是我們最常用的Linux命令之一,它可以實(shí)時的顯示當(dāng)前正在執(zhí)行的進(jìn)程的CPU使用率,內(nèi)存使用率等系統(tǒng)信息。top -Hp pid 可以查看線程的系統(tǒng)資源使用情況。

        vmstat命令

        vmstat是一個指定周期和采集次數(shù)的虛擬內(nèi)存檢測工具,可以統(tǒng)計(jì)內(nèi)存,CPU,swap的使用情況,它還有一個重要的常用功能,用來觀察進(jìn)程的上下文切換。字段說明如下:

        r: 運(yùn)行隊(duì)列中進(jìn)程數(shù)量(當(dāng)數(shù)量大于CPU核數(shù)表示有阻塞的線程)

        b: 等待IO的進(jìn)程數(shù)量

        swpd: 使用虛擬內(nèi)存大小

        free: 空閑物理內(nèi)存大小

        buff: 用作緩沖的內(nèi)存大小(內(nèi)存和硬盤的緩沖區(qū))

        cache: 用作緩存的內(nèi)存大小(CPU和內(nèi)存之間的緩沖區(qū))

        si: 每秒從交換區(qū)寫到內(nèi)存的大小,由磁盤調(diào)入內(nèi)存

        so: 每秒寫入交換區(qū)的內(nèi)存大小,由內(nèi)存調(diào)入磁盤

        bi: 每秒讀取的塊數(shù)

        bo: 每秒寫入的塊數(shù)

        in: 每秒中斷數(shù),包括時鐘中斷。

        cs: 每秒上下文切換數(shù)。

        us: 用戶進(jìn)程執(zhí)行時間百分比(user time)

        sy: 內(nèi)核系統(tǒng)進(jìn)程執(zhí)行時間百分比(system time)

        wa: IO等待時間百分比

        id: 空閑時間百分比

        pidstat命令

        pidstat 是 Sysstat 中的一個組件,也是一款功能強(qiáng)大的性能監(jiān)測工具,top 和 vmstat 兩個命令都是監(jiān)測進(jìn)程的內(nèi)存、CPU 以及 I/O 使用情況,而 pidstat 命令可以檢測到線程級別的。pidstat命令線程切換字段說明如下:

        UID :被監(jiān)控任務(wù)的真實(shí)用戶ID。

        TGID :線程組ID。

        TID:線程ID。

        cswch/s:主動切換上下文次數(shù),這里是因?yàn)橘Y源阻塞而切換線程,比如鎖等待等情況。

        nvcswch/s:被動切換上下文次數(shù),這里指CPU調(diào)度切換了線程。

        jstack命令

        jstack是JDK工具命令,它是一種線程堆棧分析工具,最常用的功能就是使用 jstack pid 命令查看線程的堆棧信息,也經(jīng)常用來排除死鎖情況。

        jstat 命令

        它可以檢測Java程序運(yùn)行的實(shí)時情況,包括堆內(nèi)存信息和垃圾回收信息,我們常常用來查看程序垃圾回收情況。常用的命令是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:從應(yīng)用程序啟動到采樣時年輕代中 gc 次數(shù);

        YGCT:從應(yīng)用程序啟動到采樣時年輕代中 gc 所用時間 (s);

        FGC:從應(yīng)用程序啟動到采樣時 老年代(Full Gc)gc 次數(shù);

        FGCT:從應(yīng)用程序啟動到采樣時 老年代代(Full Gc)gc 所用時間 (s);

        GCT:從應(yīng)用程序啟動到采樣時 gc 用的總時間 (s)。

        jmap命令

        jmap也是JDK工具命令,他可以查看堆內(nèi)存的初始化信息以及堆內(nèi)存的使用情況,還可以生成dump文件來進(jìn)行詳細(xì)分析。查看堆內(nèi)存情況命令jmap -heap pid。

        mat內(nèi)存工具

        MAT(Memory Analyzer Tool)工具是eclipse的一個插件(MAT也可以單獨(dú)使用),它分析大內(nèi)存的dump文件時,可以非常直觀的看到各個對象在堆空間中所占用的內(nèi)存大小、類實(shí)例數(shù)量、對象引用關(guān)系、利用OQL對象查詢,以及可以很方便的找出對象GC Roots的相關(guān)信息。

        idea中也有這么一個插件,就是JProfiler。

      責(zé)編:fushihao
      • 會計(jì)考試
      • 建筑工程
      • 職業(yè)資格
      • 醫(yī)藥考試
      • 外語考試
      • 學(xué)歷考試