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

一次Jvm old過高的排查過程實戰(zhàn)記錄

 更新時間:2018年11月05日 14:40:43   作者:小草莓子桑  
這篇文章主要給大家介紹了一次Jvm old過高的排查過程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

最近遇到一個Jvm old過高的案例,現(xiàn)象是一個站點的jvm old區(qū)過高,分析原因是,原來的設(shè)計方案有問題,給前端返回的數(shù)據(jù)里面包含了大量的html代碼,從存儲中拿數(shù)據(jù)的過程、拼接數(shù)據(jù)的過程過于漫長了,造成了大量對象的生命周期過長,對象被 標記到了old中,造成了old區(qū)過高,監(jiān)控系統(tǒng)進行了報警,詳細原因就不做詳細分析了,主要分享一下問題排查的過程。

收到了監(jiān)控系統(tǒng)的報警,在服務(wù)器上查詢jvm內(nèi)存情況

jstat -gcutil pid 時間間隔,可以按時間間隔打印jvm的內(nèi)存情況,例如:

jstat -gcutil 30922 1000

jvm進程30922的內(nèi)存情況

大致說一下,S0,S1這些的含義:

S0:年輕代中第一個survivor(幸存區(qū))已使用的占當前容量百分比
S1:年輕代中第二個survivor(幸存區(qū))已使用的占當前容量百分比
E: 年輕代中Eden(伊甸園)已使用的占當前容量百分比
O: old代已使用的占當前容量百分比
P: perm代已使用的占當前容量百分比
YGC: 從應(yīng)用程序啟動到采樣時年輕代中g(shù)c次數(shù)
YGCT:從應(yīng)用程序啟動到采樣時年輕代中g(shù)c所用時間(s)
FGC: 從應(yīng)用程序啟動到采樣時old代(全gc)gc次數(shù)
FGCT:從應(yīng)用程序啟動到采樣時old代(全gc)gc所用時間(s)
GCT: 從應(yīng)用程序啟動到采樣時gc用的總時間(s)

從內(nèi)存情況,來看,S0、伊甸園已經(jīng)被打滿,old已經(jīng)被打滿,排除了是大對象實例過多直接把old打滿的情況,繼續(xù)分析

查看應(yīng)用啟動的jvm參數(shù)

-Xms2g -Xmx2g -Xmn1g -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:SurvivorRatio=4 -XX:MaxTenuringThreshold=10 -XX:CMSInitiatingOccupancyFraction=80

說兩個參數(shù)的含義吧

XX:SurvivorRatio=4,這個參數(shù)的意思是Survivor兩個區(qū)與新生代的比例,設(shè)置為4的意思是兩個區(qū)與新生代的比例為2:4,MaxTenuringThreshold=10, 這個參數(shù)的意思是對象標記多少次后記為old對象,放入到老年代中,設(shè)置為10就是新生代對象被標記10次還沒有釋放,就放到老年代中,從參數(shù)上看,造成old區(qū)過高報警的原因是有的對象在新生代中,被標記了10次都沒有被釋放,被放入到了老年代中,造成了老年代過大,F(xiàn)GC頻率過高

經(jīng)朋友指點,這一塊的分析有問題,有問題的分析留著,再貼一下朋友的分析,對比一下

動態(tài)對象年齡判定:為了能更好地適應(yīng)不同程度的內(nèi)存狀況,虛擬機并不是永遠地要求對象的年齡必須達到了MaxTenuringThreshold才能晉升到老年代,如果在Survivor空間中相同年齡的所有對象大小的總和大于Survivor空間的一半,年齡大于或等于年齡的對象就可以直接進入老年代,無須等到MaxTenuringThreshold中要求的年齡


朋友的指導(dǎo)

導(dǎo)出dump文件,使用jvisualvm.exe查看

導(dǎo)出dump文件的過程就不贅述了,簡單貼一下命令

jmap -dump:format=b,file=serviceDump.dat pid

jvisualvm是一個jdk自帶的內(nèi)存分析工具,一般位置在jdk安裝目錄下:

C:\Program Files\Java\jdk1.8.0_141\bin\jvisualvm.exe

jvisualvm工具界面

在這選擇已經(jīng)導(dǎo)出的dump文件,查看內(nèi)存中類的實例數(shù)、實例大小


查看類的實例數(shù)

發(fā)現(xiàn)是Char[],String,HashMap這三個的實例是jvm中最多的,實例數(shù)分別占31%、30.9%、30.2%,總共占了92.1%,實例的大小分別占35.8%、14.6%、22.4%,總共占了72.8%,主要是這三個類的實例占用過大的內(nèi)存

查看Char[]的實例信息

點擊去,查看Char[]的實例信息,從大到小的排列


有一些實例比別的實例大很多

查看最大的這些實例,發(fā)現(xiàn)這些實例里面的內(nèi)容是

<graph lineThickness='3' showValues='0' formatNumberScale='1' anchorRadius='3' divLineAlpha='20' divLineColor='CC3300' divLineIsDashed='1' showAlternateHGridColor='1' alternateHGridAlpha='5' alternateHGridColor='CC3300' shaowAlpha='40d' chartRightMargin='3..

目測這些都是前端使用的圖表所用到的數(shù)據(jù),設(shè)計不合理,這些圖表的html代碼由后臺代碼給前端返回了


實例里面的內(nèi)容

查看這些實例的堆棧信息

查看這些實例的垃圾回收根節(jié)點


查看這些實例的垃圾回收根節(jié)點

發(fā)現(xiàn)是根節(jié)點是 StringBuilder對象,查看堆棧信息


查看堆棧信息

堆棧信息

通過堆棧信息,就定位到了代碼中,分析代碼,原因基本是,原來的設(shè)計方案有問題,給前端返回的數(shù)據(jù)里面包含了大量的html代碼,從存儲中拿數(shù)據(jù)的過程、拼接數(shù)據(jù)的過程過于漫長了,造成了大量對象的生命周期過長,對象被 標記到了old中,造成了old區(qū)過高,這里就是是分享下,排查的過程,不對原因過于詳細的表述了

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • java微信掃描公眾號二維碼實現(xiàn)登陸功能

    java微信掃描公眾號二維碼實現(xiàn)登陸功能

    這篇文章主要為大家詳細介紹了PHP微信掃描公眾號二維碼實現(xiàn)登陸功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • SSM項目中配置LOG4J日志的方法

    SSM項目中配置LOG4J日志的方法

    本篇文章主要介紹了SSM項目中配置LOG4J日志的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 三分鐘教你如何在IDEA中快速創(chuàng)建工程的方法

    三分鐘教你如何在IDEA中快速創(chuàng)建工程的方法

    這篇文章主要介紹了三分鐘教你如何在IDEA中快速創(chuàng)建工程的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • springboot?整合?dubbo?的實現(xiàn)組聚合詳情

    springboot?整合?dubbo?的實現(xiàn)組聚合詳情

    這篇文章主要介紹了springboot整合dubbo的實現(xiàn)組聚合詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • IDEA創(chuàng)建Servlet并配置web.xml的實現(xiàn)

    IDEA創(chuàng)建Servlet并配置web.xml的實現(xiàn)

    這篇文章主要介紹了IDEA創(chuàng)建Servlet并配置web.xml的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Java微信掃碼登錄功能并實現(xiàn)認證授權(quán)全過程

    Java微信掃碼登錄功能并實現(xiàn)認證授權(quán)全過程

    這篇文章主要給大家介紹了關(guān)于Java微信掃碼登錄功能并實現(xiàn)認證授權(quán)的相關(guān)資料,要在Java中實現(xiàn)微信掃碼登錄,您可以按照以下步驟進行操作,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • SpringBoot應(yīng)用自定義logback日志詳解

    SpringBoot應(yīng)用自定義logback日志詳解

    默認情況下,SpringBoot內(nèi)部使用logback作為系統(tǒng)日志實現(xiàn)的框架,將日志輸出到控制臺,不會寫到日志文件。本篇文章主要講解下如何自定義logabck.xml以及對logback文件中配置做一個詳解,需要的可以參考一下
    2022-10-10
  • springboot如何使用thymeleaf完成頁面緩存

    springboot如何使用thymeleaf完成頁面緩存

    這篇文章主要介紹了springboot如何使用thymeleaf完成頁面緩存,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 淺談java中對集合對象list的幾種循環(huán)訪問

    淺談java中對集合對象list的幾種循環(huán)訪問

    下面小編就為大家?guī)硪黄猨ava中對集合對象list的幾種循環(huán)訪問詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • 詳解Mybatis中常用的約束文件

    詳解Mybatis中常用的約束文件

    這篇文章主要介紹了詳解Mybatis中常用的約束文件,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09

最新評論

长子县| 和林格尔县| 北川| 中超| 承德县| 崇文区| 大理市| 灵川县| 襄垣县| 德庆县| 贵溪市| 军事| 砀山县| 蓬溪县| 海安县| 渝中区| 佳木斯市| 中阳县| 循化| 卫辉市| 蕲春县| 乐山市| 渝北区| 贵定县| 南靖县| 邳州市| 裕民县| 电白县| 车险| 名山县| 浦东新区| 固安县| 轮台县| 海丰县| 固阳县| 尼木县| 荥阳市| 安西县| 无棣县| 大姚县| 古浪县|