在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

硬核:JVM性能調(diào)優(yōu),有哪些好用的內(nèi)存分析神器?

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

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

下面推薦幾個(gè)常用的內(nèi)存分析命令和工具

jstat命令

JDK自帶的jstat命令用于查看虛擬機(jī)垃圾回收的情況,如下命令使用gcutil參數(shù)輸出堆內(nèi)存使用情況統(tǒng)計(jì):

jstat–gcutil-h20pid1000100

此命令顯示進(jìn)程為pid的內(nèi)存使用匯總,1000毫秒輸出一次,總共輸出100行。-h 20表示每20行輸出一次表頭。-gcutil表示顯示JVM內(nèi)存使用匯總統(tǒng)計(jì):

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

列表顯示了虛擬機(jī)各個(gè)代的使用情況,描述了堆內(nèi)存的使用占比和垃圾回收次數(shù),以及占用時(shí)間,具體含義如下:

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

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

其他查看匯總信息的常用選項(xiàng)如下:

  • -gc,類似gcutil,gcutil以百分比形式顯示內(nèi)存的使用情況,gc顯示的是內(nèi)存占用的字節(jié)數(shù),以KB的形式輸出堆內(nèi)存的使用情況。

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

jmap命令

jmap命令用于保存虛擬機(jī)內(nèi)存鏡像到文件中,然后可以使用JVisualVM或者M(jìn)AT工具進(jìn)行進(jìn)一步分析。命令如下:

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

需要注意,實(shí)際系統(tǒng)會(huì)有2GB到8GB內(nèi)存,此命令會(huì)導(dǎo)致虛擬機(jī)暫停工作1~3秒。還有一種是被動(dòng)獲取方式,當(dāng)虛擬機(jī)出現(xiàn)內(nèi)存溢出的時(shí)候,會(huì)主動(dòng)“dump”內(nèi)存文件。添加虛擬機(jī)啟動(dòng)參數(shù):

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

當(dāng)虛擬機(jī)判斷達(dá)到內(nèi)存溢出觸發(fā)條件的時(shí)候,會(huì)有如下輸出并保存鏡像文件:

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

當(dāng)獲得鏡像文件后,打開JvisualVM工具,選擇菜單“File”,點(diǎn)擊裝入,選擇我們保存過的dump文件,這時(shí)面板會(huì)打開內(nèi)存鏡像文件。打開較大的內(nèi)存鏡像文件需要較長(zhǎng)的時(shí)間,需要耐心等候,其他工具,如MAT,或者商業(yè)的YourKit Java Profiler打開鏡像文件更快,分析功能更強(qiáng)大。

GCeasy

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

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

下圖統(tǒng)計(jì)了GC總的時(shí)間和回收的字節(jié)數(shù),也顯示了Full GC的統(tǒng)計(jì)情況。

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

JMC

Java Mission Control簡(jiǎn)稱JMC,是JDK自帶的工具,是一個(gè)高性能的對(duì)象監(jiān)視、管理、產(chǎn)生時(shí)間分析和診斷的工具套件,筆者主要用來追蹤熱點(diǎn)代碼與熱點(diǎn)線程,是主要的內(nèi)存優(yōu)化調(diào)優(yōu)工具。

類似JVisualVM,通過JMX連接進(jìn)入JMC控制臺(tái)。

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

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

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

使用熱點(diǎn)方法可以直接找到最耗時(shí)的幾個(gè)方法,對(duì)熱點(diǎn)方法重點(diǎn)優(yōu)化就可以使CPU的使用率下降一大截。

飛行記錄還可以反映內(nèi)存增長(zhǎng)的熱點(diǎn)方法,以及顯示單位時(shí)間內(nèi)創(chuàng)建的最多對(duì)象的方法。下圖為找到的內(nèi)存對(duì)象中創(chuàng)建的最多的char[]的方法,一個(gè)是Fastjson,另一個(gè)是Kryo。

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

小結(jié):通過JMC的熱點(diǎn)方法的統(tǒng)計(jì)結(jié)果可以有針對(duì)性地進(jìn)行優(yōu)化,筆者通過對(duì)線上系統(tǒng)進(jìn)行優(yōu)化使得CPU使用率下降了40%、內(nèi)存GC頻率下降了100%以上。

MAT

MAT是Memory Analyzer的簡(jiǎn)稱,它是一款功能強(qiáng)大的Java堆內(nèi)存分析器,可以分析具有數(shù)億個(gè)對(duì)象的內(nèi)存鏡像,快速計(jì)算對(duì)象大小,自動(dòng)找到嫌疑的泄漏對(duì)象并形成內(nèi)存泄漏報(bào)告。MAT是基于Eclipse開發(fā)的,是一款免費(fèi)的內(nèi)存鏡像分析工具,是筆者發(fā)現(xiàn)內(nèi)存泄漏原因的主要工具。

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

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

它提供了Leak Suspects 報(bào)告,輸出有可能發(fā)生內(nèi)存泄漏的對(duì)象。

OQL

OQL語句類似SQL語句,可以在VisualVM、MAT等大多數(shù)內(nèi)存鏡像分析工具中執(zhí)行,完成對(duì)象查找任務(wù)。

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3112

    瀏覽量

    75046
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    782

    瀏覽量

    44866
  • JVM
    JVM
    +關(guān)注

    關(guān)注

    0

    文章

    160

    瀏覽量

    12539

原文標(biāo)題:硬核:JVM性能調(diào)優(yōu),有哪些好用的內(nèi)存分析神器?

文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    java開發(fā)人員不了解jvm調(diào)優(yōu)對(duì)工作有影響嗎

    作為一名java開發(fā)人員,不了解jvm調(diào)優(yōu)對(duì)工作什么影響?
    發(fā)表于 04-10 11:57

    JVM性能指標(biāo)分析

    JVM性能調(diào)優(yōu)實(shí)踐——JVM
    發(fā)表于 10-17 15:00

    Jvm垃圾回收機(jī)制及性能調(diào)優(yōu)實(shí)戰(zhàn)

    JVM中自動(dòng)檢測(cè)并移除不再使用的數(shù)據(jù)對(duì)象的這種機(jī)制稱為:垃圾回收,簡(jiǎn)稱GC。JVM通過使用垃圾收集器及使用相應(yīng)的垃圾回收算法將內(nèi)存中不再被使用的對(duì)象進(jìn)行回收。由于不同JAVA對(duì)象存活時(shí)間是不一樣
    發(fā)表于 04-03 14:31 ?2次下載

    關(guān)于JVM調(diào)優(yōu)知識(shí)

    最近很多小伙伴跟我說,自己學(xué)了不少JVM調(diào)優(yōu)知識(shí),但是在實(shí)際工作中卻不知道何時(shí)對(duì)JVM進(jìn)行調(diào)優(yōu)
    的頭像 發(fā)表于 09-14 14:54 ?1032次閱讀

    Alluxio線程池結(jié)構(gòu)與吞吐量調(diào)優(yōu)

    本文介紹了 Alluxio Master 的線程池結(jié)構(gòu)與每個(gè)線程的功能。在調(diào)優(yōu)過程中,利用分析結(jié)果調(diào)整審計(jì)日志的 blocking queue,調(diào)整 UFS-SYNC-PREFETCH 線程數(shù),
    發(fā)表于 11-11 11:36 ?753次閱讀

    jvm內(nèi)存分析命令和工具

    JVM內(nèi)存分析是Java開發(fā)和調(diào)優(yōu)過程中非常重要的一部分。通過對(duì)JVM
    的頭像 發(fā)表于 12-05 11:07 ?1545次閱讀

    javajvm調(diào)優(yōu)幾種方法

    基本概念。JVM(Java Virtual Machine,Java虛擬機(jī))是Java運(yùn)行時(shí)環(huán)境的核心組件,負(fù)責(zé)解釋和執(zhí)行Java字節(jié)碼文件。JVM調(diào)優(yōu)的目標(biāo)是優(yōu)化
    的頭像 發(fā)表于 12-05 11:11 ?2388次閱讀

    什么場(chǎng)景需要jvm調(diào)優(yōu)

    JVM調(diào)優(yōu)是指對(duì)Java虛擬機(jī)進(jìn)行性能優(yōu)化和資源管理,以提高應(yīng)用程序的運(yùn)行效率和吞吐量。JVM調(diào)
    的頭像 發(fā)表于 12-05 11:14 ?1733次閱讀

    jvm調(diào)優(yōu)參數(shù)

    JVM(Java虛擬機(jī))是Java程序的運(yùn)行環(huán)境,它負(fù)責(zé)解釋Java字節(jié)碼并執(zhí)行相應(yīng)的指令。為了提高應(yīng)用程序的性能和穩(wěn)定性,我們可以調(diào)優(yōu)JVM
    的頭像 發(fā)表于 12-05 11:29 ?910次閱讀

    jvm參數(shù)的設(shè)置和jvm調(diào)優(yōu)

    JVM(Java虛擬機(jī))參數(shù)的設(shè)置和調(diào)優(yōu)對(duì)于提高Java應(yīng)用程序的性能和穩(wěn)定性非常重要。在本文中,我們將詳細(xì)介紹JVM參數(shù)的設(shè)置和
    的頭像 發(fā)表于 12-05 11:36 ?2158次閱讀

    jvm調(diào)優(yōu)主要是調(diào)哪里

    JVM調(diào)優(yōu)主要涉及內(nèi)存管理、垃圾回收、線程管理與鎖優(yōu)化等方面。下面將詳細(xì)介紹每個(gè)方面的調(diào)優(yōu)技術(shù)和
    的頭像 發(fā)表于 12-05 11:37 ?1803次閱讀

    jvm調(diào)優(yōu)常用命令

    JVM調(diào)優(yōu)是提升Java應(yīng)用性能的一個(gè)重要方面,通過合理設(shè)置JVM參數(shù)可以達(dá)到優(yōu)化應(yīng)用性能、提高
    的頭像 發(fā)表于 12-05 11:43 ?963次閱讀

    jvm調(diào)優(yōu)工具有哪些

    JVM調(diào)優(yōu)是提高Java應(yīng)用程序性能的重要手段,而JVM調(diào)優(yōu)
    的頭像 發(fā)表于 12-05 11:44 ?1404次閱讀

    鴻蒙開發(fā)實(shí)戰(zhàn):【性能調(diào)優(yōu)組件】

    性能調(diào)優(yōu)組件包含系統(tǒng)和應(yīng)用調(diào)優(yōu)框架,旨在為開發(fā)者提供一套性能
    的頭像 發(fā)表于 03-13 15:12 ?753次閱讀
    鴻蒙開發(fā)實(shí)戰(zhàn):【<b class='flag-5'>性能</b><b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>組件】

    深度解析JVM調(diào)優(yōu)實(shí)踐應(yīng)用

    Tomcat自身的調(diào)優(yōu)是針對(duì)conf/server.xml中的幾個(gè)參數(shù)的調(diào)優(yōu)設(shè)置。首先是對(duì)這幾個(gè)參數(shù)的含義要有深刻而清楚的理解。
    的頭像 發(fā)表于 04-01 10:24 ?722次閱讀
    深度解析<b class='flag-5'>JVM</b><b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>實(shí)踐應(yīng)用
    主站蜘蛛池模板: 九九福利视频 | 91夫妻视频 | 日韩a毛片 | 哪里可以看免费毛片 | 男人日女人视频在线观看 | 午夜骚片| 久久婷人人澡人人爽 | 咪咪爱毛片 | 日韩色爱 | tom影院亚洲国产一区二区 | 加勒比一木道|视频在线看 加勒比在线免费视频 | 视频综合网 | 国产精品29页 | jlzzjlzzjlzz亚洲女 | 成人国产一区二区 | 性久久久久久久久 | 色视频线观看在线播放 | 26uuu欧美日本| 天天色姑娘 | 一级毛片免费网站 | 精品国产免费久久久久久婷婷 | 人与禽性视频77777 | 精品国产免费一区二区 | 中文一区二区在线观看 | 久久99精品福利久久久 | 色偷偷91久久综合噜噜噜噜 | 色视频免费国产观看 | 亚欧一区 | 亚洲午夜顶级嘿嘿嘿影院 | 性配久久久 | 国产香蕉在线视频 | 中文字幕一区二区三区四区五区 | 亚洲色图欧美视频 | 久久99久久精品国产只有 | 日本欧美视频 | www.天天射 | 视频免费观看网址 | 伊人久久精品成人网 | 人人公开免费超级碰碰碰视频 | 欧洲亚洲国产精华液 | 日本a级在线 |