日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

火焰图 性能分析 java,使用火焰图进行Java应用性能分析

發布時間:2025/3/21 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 火焰图 性能分析 java,使用火焰图进行Java应用性能分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者: 一字馬胡

轉載標志 【2017-11-19】

更新日志

日期

更新內容

備注

2017-11-19

新建文章

初版

導入

本文主要想要記錄進行java應用性能分析的一種方式,也就是使用火焰圖來進行java應用性能分析,本文將介紹一些工具,包括如何生成profile數據,以及如何根據profile數據生成火焰圖等,本文的內容都基于Linux(Ubuntu x64)系統,這一點需要特別注意。如果你有時間的話,可以去閱讀以下Java Flame Graphs,作者是Brendan Gregg大神,本文介紹的生成火焰圖的工具就出自Brendan Gregg之手。

Action

首先,我們需要收集java代碼運行時的profile數據,本文使用的是一個叫做lightweight-java-profiler的工具,你需要下載lightweight-java-profiler,并且自己編譯才能使用它來進行數據收集,關于lightweight-java-profiler的更多的細節介紹,可以參考參考鏈接。你可以直接在github搜索lightweight-java-profiler,并且clone到本地進行編譯,當然在編譯之前你可以進行一些數據收集的方案定制:

// Things that should probably be user-configurable

// Number of times per second that we profile

static const int kNumInterrupts = 100;

// Maximum number of stack traces

static const int kMaxStackTraces = 3000;

// Maximum number of frames to store from the stack traces sampled.

static const int kMaxFramesToCapture = 128;

// Location where the data are dumped.

static const char kDefaultOutFile[] = "traces.txt";

上面的參數設定在globals.h文件中可以找到,可以根據實際情況進行設定,比如kNumInterrupts的意思就是每秒鐘進行數據收集的次數,默認輸出profile數據的文件的名字為“traces.txt”,這些你都可以做自定義修改,當改好的之后就可以進行編譯了,在64位機器上編譯可以使用下面的命令:

make BITS=64 all

如果順利的話,可以看到會生成一個build-64的文件夾,里面有一個.so文件叫做liblagent.so,這就是我們需要的收集profile數據的.so文件。現在,你可以在啟動你的java應用的時候加上下面的參數:

-agentpath:${path}/lightweight-java-profiler/build-64/liblagent.so

然后就可以獲取到trace.txt文件。接下來,就需要將java應用的運行時profile數據轉換為可視化的火焰圖來進行性能分析了,將profile數據轉換為火焰圖的工具上文已經提到過,可以在FlameGraph下載,下載完成之后,就可以運行下面的命令來生成火焰圖了:

cd FlameGraph

./stackcollapse-ljp.awk < ${path}/traces.txt | ./flamegraph.pl > {$path}/traces.svg

現在,你應該可以得到一個火焰圖的.svg文件了,在瀏覽器中打開就可以看到火焰圖的細節了。關于火焰圖,可以參考下面的說明:

The y-axis is stack depth, and the x-axis spans the sample population. Each rectangle is a stack frame. Color is not important, it's randomized to differentiate frames. The ordering from left to right is also unimportant.

You look for the widest frames, from bottom up, and forks in the "flames", which indicate different code paths taken

所以,我們在看火焰圖的時候,主要關注比較寬的就可以發現性能問題了,因為越寬代表占用的CPU時間越多,也就越是性能瓶頸,當然這種分析得結合實際的應用代碼,下面是一張火焰圖,具體的分析就不在本文的中進行了。本文僅記錄一種分析java應用性能問題的方案,采用觀察運行時火焰圖的方式來發現應用的性能瓶頸是一種比較直觀的方法,而采集profile數據使用lightweight-java-profiler,將采集到的profile數據轉換為火焰圖使用工具FlameGraph,當未來需要對java應用進行性能優化的時候,可以采用這種方案來發現性能瓶頸,并及時進行優化。

火焰圖示例

總結

以上是生活随笔為你收集整理的火焰图 性能分析 java,使用火焰图进行Java应用性能分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天操人人干 | 亚洲福利国产 | 婷婷激情五月网 | jizz18欧美18 | 一区精品二区国产 | 午夜影院h | 男女男网站| 久草福利资源 | 无码国模国产在线观看 | 日日爽日日操 | 亚洲免费黄色网 | 2019中文字幕在线观看 | 驯服少爷漫画免费观看下拉式漫画 | a男人天堂 | 欧美三级精品 | 青青草97 | 在线观看国产免费av | a级在线观看 | av黄色一级片 | 小泽玛利亚一区二区三区 | 福利视频亚洲 | 亚洲一级网站 | 国产三级国产精品 | 美日韩精品 | 色a在线| 91精品国产综合久久国产大片 | 国产不卡一二三 | 国产美女免费网站 | 欧美中文字幕在线播放 | 激情婷婷色 | 日韩成人在线播放 | 午夜私人影院 | 欧美××××黑人××性爽 | 黄色污网站在线观看 | 久久黄色视 | 欧美一级大黄 | 在线播放一区二区三区 | 日韩人妻一区二区三区蜜桃视频 | 人妻体内射精一区二区三区 | missav | 免费高清av在线看 | 深爱开心激情网 | 超碰免费在线播放 | 奇米中文字幕 | 这里只有精品视频 | 国产高清不卡av | 亚洲伊人婷婷 | 久艹在线播放 | 一区二区不卡免费视频 | 国产激情第一页 | 亚洲免费不卡视频 | 夜夜嗨av禁果av粉嫩av懂色av | 干美女少妇 | 性xxxfllreexxx少妇 | 日韩黄色一区二区 | 中文字幕一区二区在线观看 | 国产a视频免费观看 | 久艹av| 国产乱码一区二区三区播放 | 强伦人妻一区二区三区视频18 | 丁香花完整视频在线观看 | 久久一二 | 国产一区二区三区免费观看 | 日韩av不卡在线观看 | 污的网站 | 黄色一级图片 | 亚洲av无码电影在线播放 | 美丽的姑娘在线观看 | 亚洲电影一区二区 | 大尺度叫床戏做爰视频 | 中文有码视频 | 久久久久国色av免费观看性色 | 国产青青草在线 | 久久日本精品字幕区二区 | 亚洲每日在线 | 极品超粉嫩尤物69xx | 尼姑福利影院 | 91国偷自产一区二区三区观看 | 亚洲国产一区二区三区 | 色呦呦视频在线观看 | 奇米网久久 | 女人18岁毛片 | 国产专区在线视频 | 日本成人午夜 | 成人免费不卡视频 | 91网页版| 99热18| 黄色免费看视频 | 国产日产精品一区二区三区四区 | 日韩av一区二区在线观看 | 欧美日韩精品在线播放 | www.日韩一区 | 日韩专区第一页 | 无套内谢少妇露脸 | 免费无遮挡无码永久视频 | 亚洲一区二区 | 亚洲欧美在线不卡 | av资源在线看 | 天堂av在线免费 | 香蕉伊人 |