欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java性能火焰圖的生成實(shí)踐

 更新時(shí)間:2025年07月10日 16:13:13   作者:運(yùn)維打怪晉級(jí)之路  
文章介紹async-profiler這一Java性能分析工具,可低開銷生成火焰圖,幫助定位CPU飆升、內(nèi)存泄露等問(wèn)題,涵蓋準(zhǔn)備程序、生成數(shù)據(jù)及展示三個(gè)核心步驟,適合解決線上性能瓶頸

序言

如果你經(jīng)常遇到 Java 線上性能問(wèn)題束手無(wú)策,看著線上服務(wù) CPU 飆升一籌莫展,發(fā)現(xiàn)內(nèi)存不斷泄露滿臉茫然。

別慌,這里有一款低開銷、自帶火焰圖、讓你大呼好用的 Java 性能分析工具 - async-profiler。

1、準(zhǔn)備程序

[root@localhost ~]# git clone git://github.com/jvm-profiling-tools/async-profiler
[root@localhost async-profiler]# yum -y install gcc+ gcc-c++
[root@localhost async-profiler]# make 
[root@localhost ~]# more  Test.java  
public class Test {

    public static void main(String[] args) throws Exception {
        Test test = new Test();
        while (true) {
            test.func1();
            test.func2();
            test.func3();
        }
    }

    public void func1() throws Exception { //調(diào)用第一個(gè)方法,需要100ms
        Thread.sleep(100L);
    }

    public void func2() throws Exception { //調(diào)用第二個(gè)方法,需要500ms
        Thread.sleep(500L);
    }

    public void func3() throws Exception { //調(diào)用第三個(gè)方法,需要1500ms
        Thread.sleep(1500L);
    }

}
[root@localhost ~]# 
[root@localhost ~]#  javac Test.java 
[root@localhost ~]# java Test

生成火焰圖數(shù)據(jù)

root      21765   7152  0 18:29 pts/1    00:00:00 java Test
root      21799  21777  0 18:29 pts/0    00:00:00 grep --color=auto java
[root@localhost ~]# cd async-profiler/
[root@localhost async-profiler]# 
[root@localhost async-profiler]# ./profiler.sh -d 60 -o collapsed -f /tmp/test_01.txt  21765
Profiling for 60 seconds
Done
[root@localhost async-profiler]# cd ..
[root@localhost ~]# ls
anaconda-ks.cfg  a.out  async-profiler  FlameGraph  jdk-8u121-linux-x64.tar.gz  perf.data  process.svg  test.c  Test.class  Test.java
[root@localhost ~]# cd  FlameGraph/
[root@localhost FlameGraph]# perl flamegraph.pl --colors=java /tmp/test_01.txt > test_01.svg
[root@localhost FlameGraph]# ls
aix-perf.pl                example-perf-stacks.txt.gz  README.md                  stackcollapse-instruments.pl      stackcollapse-pmc.pl        test
demos                      example-perf.svg            record-test.sh             stackcollapse-java-exceptions.pl  stackcollapse-recursive.pl  test_01.svg
dev                        files.pl                    stackcollapse-aix.pl       stackcollapse-jstack.pl           stackcollapse-sample.awk    test.sh
difffolded.pl              flamegraph.pl               stackcollapse-bpftrace.pl  stackcollapse-ljp.awk             stackcollapse-stap.pl
docs                       jmaps                       stackcollapse-elfutils.pl  stackcollapse-perf.pl             stackcollapse-vsprof.pl
example-dtrace-stacks.txt  pkgsplit-perf.pl            stackcollapse-gdb.pl       stackcollapse-perf-sched.awk      stackcollapse-vtune.pl
example-dtrace.svg         range-perf.pl               stackcollapse-go.pl        stackcollapse.pl                  stackcollapse-xdebug.php
[root@localhost FlameGraph]# sz test_01.svg

3、展示

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mybatis中的Criteria條件查詢方式

    Mybatis中的Criteria條件查詢方式

    這篇文章主要介紹了Mybatis中的Criteria條件查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringBoot整合Liquibase實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)管理和遷移

    SpringBoot整合Liquibase實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)管理和遷移

    Liquibase是一個(gè)用于用于跟蹤、管理和應(yīng)用數(shù)據(jù)庫(kù)變化的開源工具,通過(guò)日志文件(changelog)的形式記錄數(shù)據(jù)庫(kù)的變更(changeset),然后執(zhí)行日志文件中的修改,將數(shù)據(jù)庫(kù)更新或回滾(rollback)到一致的狀態(tài),本文主要介紹SpringBoot與Liquibase的集成,需要的朋友可以參考下
    2024-11-11
  • java -jar設(shè)置添加啟動(dòng)參數(shù)實(shí)現(xiàn)方法

    java -jar設(shè)置添加啟動(dòng)參數(shù)實(shí)現(xiàn)方法

    這篇文章主要介紹了java -jar設(shè)置添加啟動(dòng)參數(shù)實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Java開發(fā)崗位面試被問(wèn)到嵌套類怎么辦

    Java開發(fā)崗位面試被問(wèn)到嵌套類怎么辦

    本篇文章主要介紹了深入理解Java嵌套類和內(nèi)部類,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-07-07
  • SpringBoot整合Mybatis實(shí)現(xiàn)多數(shù)據(jù)源配置與跨數(shù)據(jù)源事務(wù)實(shí)例

    SpringBoot整合Mybatis實(shí)現(xiàn)多數(shù)據(jù)源配置與跨數(shù)據(jù)源事務(wù)實(shí)例

    開發(fā)中經(jīng)常有這樣的需要: 讀寫分離。微服務(wù)環(huán)境下可以實(shí)現(xiàn)一個(gè)服務(wù)讀取一個(gè)數(shù)據(jù)庫(kù),另一個(gè)服務(wù)寫庫(kù)。但是在實(shí)際應(yīng)用中有時(shí)也需要在一個(gè)服務(wù)中讀寫不同的數(shù)據(jù)庫(kù)??梢栽谝粋€(gè)SpringBoot單體項(xiàng)目中配置多個(gè)數(shù)據(jù)源解決讀寫庫(kù)分離
    2022-11-11
  • Spring學(xué)習(xí)筆記1之IOC詳解盡量使用注解以及java代碼

    Spring學(xué)習(xí)筆記1之IOC詳解盡量使用注解以及java代碼

    這篇文章主要介紹了Spring學(xué)習(xí)筆記1之IOC詳解盡量使用注解以及java代碼 的相關(guān)資料,需要的朋友可以參考下
    2016-07-07
  • java實(shí)現(xiàn)簡(jiǎn)易超市管理系統(tǒng) 附源碼下載

    java實(shí)現(xiàn)簡(jiǎn)易超市管理系統(tǒng) 附源碼下載

    這篇文章主要介紹了java實(shí)現(xiàn)簡(jiǎn)易超市管理系統(tǒng)(含源碼),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • springcloud整合seata的實(shí)現(xiàn)代碼

    springcloud整合seata的實(shí)現(xiàn)代碼

    這篇文章主要介紹了springcloud整合seata的實(shí)現(xiàn)方法,整合步驟通過(guò)引入spring-cloud-starter-alibaba-seata?jar包,文中結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):棧

    java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):棧

    這篇文章主要介紹了Java的數(shù)據(jù)解構(gòu)基礎(chǔ),希望對(duì)廣大的程序愛好者有所幫助,同時(shí)祝大家有一個(gè)好成績(jī),需要的朋友可以參考下,希望能給你帶來(lái)幫助
    2021-07-07
  • java.lang.OutOfMemoryError: Metaspace異常解決的方法

    java.lang.OutOfMemoryError: Metaspace異常解決的方法

    這篇文章主要介紹了java.lang.OutOfMemoryError: Metaspace異常解決的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評(píng)論