色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

硬核:JVM性能調優,有哪些好用的內存分析神器?

Android編程精選 ? 來源:Android編程精選 ? 2023-02-11 10:58 ? 次閱讀
對于高并發訪問量的電商、物聯網、金融、社交等系統來說,JVM內存優化是非常有必要的,可以提高系統的吞吐量和性能。通常調優的首選方式是減少FGC次數或者FGC時間,以避免系統過多地暫停。FGC達到理想值后,比如一天或者兩天觸發一次FGC。FCT時間優化為100~300毫秒后,再減少YoungGC次數或者YoungGC時間,YoungGC仍然會消耗CPU資源,優化YoungGC調用次數和消耗的CPU資源,可以提高系統的吞吐量。

優化GC前,必須獲取GC的實際使用情況,最好的方式是通過CG Log收集垃圾回收日志,通過一些可視化工具查看垃圾回收分析數據,比如GCEasy。持續優化和對比優化前后的GC Log,能確認吞吐量和性能是否得到提升。

下面推薦幾個常用的內存分析命令和工具

jstat命令

JDK自帶的jstat命令用于查看虛擬機垃圾回收的情況,如下命令使用gcutil參數輸出堆內存使用情況統計:

jstat–gcutil-h20pid1000100

此命令顯示進程為pid的內存使用匯總,1000毫秒輸出一次,總共輸出100行。-h 20表示每20行輸出一次表頭。-gcutil表示顯示JVM內存使用匯總統計:

bbbe497e-a9b1-11ed-bfe3-dac502259ad0.png

列表顯示了虛擬機各個代的使用情況,描述了堆內存的使用占比和垃圾回收次數,以及占用時間,具體含義如下:

  • S0,第一個幸存區使用比值。
  • S1,第二個幸存區的使用率。
  • E,伊甸園區的使用比值。
  • O,老年代。
  • M,方法區、元空間使用率。
  • CCS,壓縮使用比值。
  • YGC,年輕代垃圾回收次數。
  • YGCT,年輕帶垃圾回收占用時間。
  • FGC,全局垃圾回收次數,這對性能影響至關重要。
  • FGCT,全局垃圾回收的消耗時間。
  • GCT,總的垃圾回收時間。

可以看到S0、S1、E變化頻率高,說明程序在頻繁創建生命周期短的對象,FGC為0,表示還未做過全局垃圾回收。如果FGC變化頻率很高,則說明系統性能和吞吐量將下降,或者可能出現內存溢出。

其他查看匯總信息的常用選項如下:

  • -gc,類似gcutil,gcutil以百分比形式顯示內存的使用情況,gc顯示的是內存占用的字節數,以KB的形式輸出堆內存的使用情況。

  • -gccause,類似gcutil,額外輸出GC的原因。

jmap命令

jmap命令用于保存虛擬機內存鏡像到文件中,然后可以使用JVisualVM或者MAT工具進行進一步分析。命令如下:

jmap-dump:format=b,file=filename.hprofpid

需要注意,實際系統會有2GB到8GB內存,此命令會導致虛擬機暫停工作1~3秒。還有一種是被動獲取方式,當虛擬機出現內存溢出的時候,會主動“dump”內存文件。添加虛擬機啟動參數:

-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/tmp/heapdump.hprof

當虛擬機判斷達到內存溢出觸發條件的時候,會有如下輸出并保存鏡像文件:

java.lang.OutOfMemoryError:Javaheapspace
Dumpingheaptoheapdump.hprof...

當獲得鏡像文件后,打開JvisualVM工具,選擇菜單“File”,點擊裝入,選擇我們保存過的dump文件,這時面板會打開內存鏡像文件。打開較大的內存鏡像文件需要較長的時間,需要耐心等候,其他工具,如MAT,或者商業的YourKit Java Profiler打開鏡像文件更快,分析功能更強大。

GCeasy

GCeasy是一個分析GC日志文件的在線網站,能根據上傳的GC日志,以圖表形式顯示GC回收過程和統計數據。下圖顯示的是GC性能的統計情況,如吞吐量顯示為99.935%,說明只有少量CPU資源用于垃圾回收。最長的GC時間是20毫秒,屬于正常范圍。在測試JVM參數調整是否能增加吞吐量,減小垃圾回收占用的CPU時,可以使用這個統計功能。

bbd2ed8e-a9b1-11ed-bfe3-dac502259ad0.png

下圖統計了GC總的時間和回收的字節數,也顯示了Full GC的統計情況。

bbee2964-a9b1-11ed-bfe3-dac502259ad0.png

JMC

Java Mission Control簡稱JMC,是JDK自帶的工具,是一個高性能的對象監視、管理、產生時間分析和診斷的工具套件,筆者主要用來追蹤熱點代碼與熱點線程,是主要的內存優化調優工具。

類似JVisualVM,通過JMX連接進入JMC控制臺。

通過連接到遠程JVM進程后,可以執行飛行記錄(FlightRecord),選擇飛行記錄存放的路徑與執行時間即可,如下圖所示。需要注意的是,執行飛行記錄功能時會對當前JVM進程有一定的性能影響(大約為5%~10%),所以建議JMC連接隔離環境中的服務器并執行飛行記錄功能。

bbffff68-a9b1-11ed-bfe3-dac502259ad0.png

通過一段時間的記錄,飛行記錄可以反映線程的繁忙程度,以及CPU的熱點方法。

使用熱點方法可以直接找到最耗時的幾個方法,對熱點方法重點優化就可以使CPU的使用率下降一大截。

飛行記錄還可以反映內存增長的熱點方法,以及顯示單位時間內創建的最多對象的方法。下圖為找到的內存對象中創建的最多的char[]的方法,一個是Fastjson,另一個是Kryo。

bc1481b8-a9b1-11ed-bfe3-dac502259ad0.png

小結:通過JMC的熱點方法的統計結果可以有針對性地進行優化,筆者通過對線上系統進行優化使得CPU使用率下降了40%、內存GC頻率下降了100%以上。

MAT

MAT是Memory Analyzer的簡稱,它是一款功能強大的Java堆內存分析器,可以分析具有數億個對象的內存鏡像,快速計算對象大小,自動找到嫌疑的泄漏對象并形成內存泄漏報告。MAT是基于Eclipse開發的,是一款免費的內存鏡像分析工具,是筆者發現內存泄漏原因的主要工具。

通過File-Open Heap Dump可以打開內存鏡像文件,顯示內容如下圖所示。

bc3a91f0-a9b1-11ed-bfe3-dac502259ad0.png

它提供了Leak Suspects 報告,輸出有可能發生內存泄漏的對象。

OQL

OQL語句類似SQL語句,可以在VisualVM、MAT等大多數內存鏡像分析工具中執行,完成對象查找任務。

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內存
    +關注

    關注

    8

    文章

    3052

    瀏覽量

    74258
  • SQL
    SQL
    +關注

    關注

    1

    文章

    773

    瀏覽量

    44231
  • JVM
    JVM
    +關注

    關注

    0

    文章

    158

    瀏覽量

    12255

原文標題:硬核:JVM性能調優,有哪些好用的內存分析神器?

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    java開發人員不了解jvm調對工作有影響嗎

    作為一名java開發人員,不了解jvm調對工作什么影響?
    發表于 04-10 11:57

    JVM性能指標分析

    JVM性能調實踐——JVM
    發表于 10-17 15:00

    Jvm垃圾回收機制及性能調實戰

    JVM中自動檢測并移除不再使用的數據對象的這種機制稱為:垃圾回收,簡稱GC。JVM通過使用垃圾收集器及使用相應的垃圾回收算法將內存中不再被使用的對象進行回收。由于不同JAVA對象存活時間是不一樣
    發表于 04-03 14:31 ?2次下載

    關于JVM調知識

    最近很多小伙伴跟我說,自己學了不少JVM調知識,但是在實際工作中卻不知道何時對JVM進行調
    的頭像 發表于 09-14 14:54 ?877次閱讀

    Alluxio線程池結構與吞吐量調

    本文介紹了 Alluxio Master 的線程池結構與每個線程的功能。在調過程中,利用分析結果調整審計日志的 blocking queue,調整 UFS-SYNC-PREFETCH 線程數,
    發表于 11-11 11:36 ?630次閱讀

    jvm內存分析命令和工具

    JVM內存分析是Java開發和調過程中非常重要的一部分。通過對JVM
    的頭像 發表于 12-05 11:07 ?1239次閱讀

    javajvm調幾種方法

    基本概念。JVM(Java Virtual Machine,Java虛擬機)是Java運行時環境的核心組件,負責解釋和執行Java字節碼文件。JVM調的目標是優化
    的頭像 發表于 12-05 11:11 ?2174次閱讀

    什么場景需要jvm調

    JVM調是指對Java虛擬機進行性能優化和資源管理,以提高應用程序的運行效率和吞吐量。JVM調
    的頭像 發表于 12-05 11:14 ?1500次閱讀

    jvm調參數

    JVM(Java虛擬機)是Java程序的運行環境,它負責解釋Java字節碼并執行相應的指令。為了提高應用程序的性能和穩定性,我們可以調JVM
    的頭像 發表于 12-05 11:29 ?690次閱讀

    jvm參數的設置和jvm調

    JVM(Java虛擬機)參數的設置和調對于提高Java應用程序的性能和穩定性非常重要。在本文中,我們將詳細介紹JVM參數的設置和
    的頭像 發表于 12-05 11:36 ?1644次閱讀

    jvm調主要是調哪里

    JVM調主要涉及內存管理、垃圾回收、線程管理與鎖優化等方面。下面將詳細介紹每個方面的調技術和
    的頭像 發表于 12-05 11:37 ?1603次閱讀

    jvm調常用命令

    JVM調是提升Java應用性能的一個重要方面,通過合理設置JVM參數可以達到優化應用性能、提高
    的頭像 發表于 12-05 11:43 ?752次閱讀

    jvm調工具有哪些

    JVM調是提高Java應用程序性能的重要手段,而JVM調
    的頭像 發表于 12-05 11:44 ?1158次閱讀

    鴻蒙開發實戰:【性能調組件】

    性能調組件包含系統和應用調框架,旨在為開發者提供一套性能
    的頭像 發表于 03-13 15:12 ?504次閱讀
    鴻蒙開發實戰:【<b class='flag-5'>性能</b><b class='flag-5'>調</b><b class='flag-5'>優</b>組件】

    深度解析JVM調實踐應用

    Tomcat自身的調是針對conf/server.xml中的幾個參數的調設置。首先是對這幾個參數的含義要有深刻而清楚的理解。
    的頭像 發表于 04-01 10:24 ?513次閱讀
    深度解析<b class='flag-5'>JVM</b><b class='flag-5'>調</b><b class='flag-5'>優</b>實踐應用
    主站蜘蛛池模板: 日本美女搞基视频 | 扒开黑女人p大荫蒂老女人 扒开粉嫩的小缝末成年小美女 | 一攻多受h嗯啊巨肉bl巨污 | 嫩草国产精品99国产精品 | 亚洲A片不卡无码久久尤物 亚洲a免费 | 91蜜桃视频| 粉嫩无套白浆第一次jk | 欧美日韩一区不卡在线观看 | A级韩国乱理伦片在线观看 a级成人免费毛片完整版 | 麻豆精品2021最新 | 亚洲精品AV一区午夜福利 | 亚洲色播永久网址大全 | 国产成人在线播放 | 欧洲美女高清一级毛片 | 三级全黄的视频在线观看 | 欧美精品亚洲精品日韩专区一 | 宫交拔不出来了h黑人 | 精品久久伊人 | 五月丁香婷姐色 | 小776 论坛| 最新中文字幕在线视频 | 久久黄色片 | 亚洲色噜噜狠狠网站 | 思思久99久女女精品 | 日本大尺码喷液过程视频 | MM131亚洲精品久久安然 | 亚洲AV噜噜88 | 日韩精品 电影一区 亚洲高清 | 欧美日韩精品一区二区三区四区 | 囯产免费精品一品二区三区视频 | 日韩高清特级特黄毛片 | 国产精品97久久AV麻豆 | 国产成人精品久久久久婷婷 | 伊人久久精品线影院 | 世界上第一个得抑郁症的人是谁 | 我的美女房东未删减版免费观看 | 天天影视网网色色欲 | 成人区精品一区二区不卡AV免费 | 打开双腿狠狠蹂躏蜜桃臀 | 丰满人妻熟女色情A片 | 嫩草影院地址一二三 |