最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

序言

如果你經(jīng)常遇到 Java 線上性能問題束手無(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)文章

  • Spring Boot實(shí)現(xiàn)異步請(qǐng)求(Servlet 3.0)

    Spring Boot實(shí)現(xiàn)異步請(qǐng)求(Servlet 3.0)

    在spring 3.2 及以后版本中增加了對(duì)請(qǐng)求的異步處理,這篇文章主要介紹了Spring Boot實(shí)現(xiàn)異步請(qǐng)求(Servlet 3.0),感興趣的小伙伴們可以參考一下。
    2017-04-04
  • 在Java中讀取和解析JSON文件的示例代碼

    在Java中讀取和解析JSON文件的示例代碼

    我們?cè)谌粘i_發(fā)中少不了和JSON數(shù)據(jù)打交道,JSON是輕量、結(jié)構(gòu)化的數(shù)據(jù)交換格式,支持跨語(yǔ)言,本文給大家詳細(xì)介紹了如何在 Java 中讀取和解析 JSON 文件,并有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2025-06-06
  • SpringData JPA基本/高級(jí)/多數(shù)據(jù)源的使用詳解

    SpringData JPA基本/高級(jí)/多數(shù)據(jù)源的使用詳解

    這篇文章主要介紹了SpringData JPA基本/高級(jí)/多數(shù)據(jù)源的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • java線程中synchronized和Lock區(qū)別及介紹

    java線程中synchronized和Lock區(qū)別及介紹

    這篇文章主要為大家介紹了java線程中synchronized和Lock區(qū)別及介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Java中的BufferedInputStream與BufferedOutputStream使用示例

    Java中的BufferedInputStream與BufferedOutputStream使用示例

    BufferedInputStream和BufferedOutputStream分別繼承于FilterInputStream和FilterOutputStream,代表著緩沖區(qū)的輸入輸出,這里我們就來看一下Java中的BufferedInputStream與BufferedOutputStream使用示例:
    2016-06-06
  • RabbitMq報(bào)錯(cuò)reply-code=406 reply-text=PRECONDITION_FAILED解決

    RabbitMq報(bào)錯(cuò)reply-code=406 reply-text=PRECONDITION_FAILED

    這篇文章主要為大家介紹了RabbitMq報(bào)錯(cuò)reply-code=406 reply-text=PRECONDITION_FAILED分析解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • SpringBoot線上環(huán)境徹底關(guān)閉Swagger-UI的方式

    SpringBoot線上環(huán)境徹底關(guān)閉Swagger-UI的方式

    這篇文章主要給大家介紹了SpringBoot線上環(huán)境徹底關(guān)閉Swagger-UI的方式,文中給出了詳細(xì)的代碼示例供大家參考,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-12-12
  • 一小時(shí)迅速入門Mybatis之實(shí)體類別名與多參數(shù) 動(dòng)態(tài)SQL

    一小時(shí)迅速入門Mybatis之實(shí)體類別名與多參數(shù) 動(dòng)態(tài)SQL

    這篇文章主要介紹了一小時(shí)迅速入門Mybatis之實(shí)體類別名與多參數(shù) 動(dòng)態(tài)SQL,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Java爬蟲 信息抓取的實(shí)現(xiàn)

    Java爬蟲 信息抓取的實(shí)現(xiàn)

    本文主要介紹 Java爬蟲 信息抓取的實(shí)現(xiàn),這里詳細(xì)介紹了如何實(shí)現(xiàn)該方法,并附示例代碼供大家學(xué)習(xí)參考,有興趣的小伙伴可以參考下
    2016-09-09
  • Java的stream流多個(gè)字段排序的實(shí)現(xiàn)

    Java的stream流多個(gè)字段排序的實(shí)現(xiàn)

    本文主要介紹了Java的stream流多個(gè)字段排序的實(shí)現(xiàn),主要是兩種方法,第一種是固定多個(gè)字段排序和第二種動(dòng)態(tài)字段進(jìn)行排序,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10

最新評(píng)論

罗田县| 潢川县| 美姑县| 潼南县| 辽源市| 澄迈县| 友谊县| 唐河县| 藁城市| 吴堡县| 灵寿县| 盐源县| 柞水县| 栾城县| 沁水县| 忻城县| 平顺县| 高阳县| 卢龙县| 黄冈市| 永靖县| 霞浦县| 常山县| 莱芜市| 彭州市| 莲花县| 梁河县| 新源县| 永安市| 建瓯市| 寿光市| 宣恩县| 桃源县| 洪江市| 旅游| 封开县| 克什克腾旗| 荆州市| 玛曲县| 西充县| 阿尔山市|