chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內不再提示

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

Android編程精選 ? 來源:Android編程精選 ? 2023-02-11 10:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

jstat命令

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

jstat–gcutil-h20pid1000100

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

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

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

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

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

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

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

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

jmap命令

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

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

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

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

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

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

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

GCeasy

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

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

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

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

JMC

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

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

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

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

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

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

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

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

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

MAT

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

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

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

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

OQL

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

審核編輯 :李倩


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

    關注

    8

    文章

    3124

    瀏覽量

    75269
  • SQL
    SQL
    +關注

    關注

    1

    文章

    783

    瀏覽量

    45145
  • JVM
    JVM
    +關注

    關注

    0

    文章

    160

    瀏覽量

    12621

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

    JVM性能指標分析

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

    Jvm垃圾回收機制及性能調優(yōu)實戰(zhàn)

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

    關于JVM調優(yōu)知識

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

    Alluxio線程池結構與吞吐量調優(yōu)

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

    jvm內存分析命令和工具

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

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

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

    什么場景需要jvm調優(yōu)

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

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

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

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

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

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

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

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

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

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

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

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

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

    深度解析JVM調優(yōu)實踐應用

    Tomcat自身的調優(yōu)是針對conf/server.xml中的幾個參數(shù)的調優(yōu)設置。首先是對這幾個參數(shù)的含義要有深刻而清楚的理解。
    的頭像 發(fā)表于 04-01 10:24 ?787次閱讀
    深度解析<b class='flag-5'>JVM</b><b class='flag-5'>調</b><b class='flag-5'>優(yōu)</b>實踐應用