精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

JVM堆外內存導致的FGC問題排查

開發 后端
Java虛擬機定義了程序執行期間使用的各種運行時數據區域。其中一些數據區域是在Java虛擬機啟動時創建的,只有在Java虛擬機退出時才會被銷毀,這部分線程共有。其他數據區域為每個線程。每線程數據區域在創建線程時創建,在線程退出時銷毀,也就是線程私有。

問題發現

服務在線上環境頻繁的Full GC。把相關運行時數據區的監控打開,發現堆外內存一直在上升。

圖片

我使用的版本是 java8,jvm廠商是orcale hotspot,垃圾回收器使用的CMS+ParNew。

我使用的jvm參數是:

-Xmx6g
-Xms6g
-XX:NewRatio=1
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
-XX:MaxTenuringThreshold=6
-XX:+ParallelRefProcEnabled
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:+heapDumpOnOutOfMemoryError
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Xloggc:/export/Logs/gc.log

為了明確排查方向,需要研究堆外內存都具體有什么東西。于是我翻看了jvm的虛擬機規范。解讀如下:

Java虛擬機運行時數據區

Java虛擬機定義了程序執行期間使用的各種運行時數據區域。其中一些數據區域是在Java虛擬機啟動時創建的,只有在Java虛擬機退出時才會被銷毀,這部分線程共有。其他數據區域為每個線程。每線程數據區域在創建線程時創建,在線程退出時銷毀,也就是線程私有。

運行時數據區分為以下幾個部分:

1、PC寄存器(The pc Register)

每個線程一個,以保存當前執行指令的地址。一旦執行了指令,PC寄存器將用下一條指令更新。

2、虛擬機棧( Java Virtual Machine Stacks)

每個Java虛擬機線程都有一個私有Java虛擬機堆棧,與線程同時創建。虛擬機棧存儲棧幀,它保存局部變量和部分結果。

虛擬機棧可能會出現Java虛擬機將拋出StackOverflowerError。

3、堆(Heap)

Java虛擬機線程之間共享堆,堆只有一個。堆是為所有類實例和數組分配內存的運行時數據區域。這也是我們創建的對象放置的區域。是最大的,最需要調優的地方。

堆是在虛擬機啟動時創建的。對象的堆存儲由垃圾收集器回收;對象永遠不會顯式解除分配。

如果計算需要的堆超過了自動存儲管理系統的可用堆,Java虛擬機會拋出OutOfMemoryError。

4、方法區(Method Area)

存儲所有類級別的數據,包括靜態變量所有線程共享。Java虛擬機只有一個方法區。存儲的有類結構,例如運行時常量池、字段和方法數據,以及方法和構造函數的代碼,包括類和實例初始化以及接口初始化中使用的特殊方法。

5、運行時常量池(Run-Time Constant Pool)

運行時常量池是類文件中常量池表的每類或每接口運行時表示形式。它包含多種常量,從編譯時已知的數字文本到必須在運行時解析的方法和字段引用。運行時常量池的功能類似于傳統編程語言的符號表,盡管它包含比典型符號表更廣泛的數據范圍。

這段我抄的,為了保持完整性,運行時常量池其實是方法區的一部分。

6、本地方法棧(Native Method Stacks)

存儲本地方法信息,線程私有。

整體結構表示如下?


圖片


問題:方法區和元空間有什么關系?

簡單理解,方法區是java的定義,而元空間則是hotspot虛擬機在1.8及其以后的實現。在1.7之前叫永久代(永久代還包含了部分老年對象),如果使用java8的話忽略永久代就行了。

根據jvm的規范,方法區內存儲的都是jvm類級別的數據,包括什么構造方法,什么常量池什么的。那什么操作會使得這方面一直在上漲呢?帶著問題,一步步搞唄。

簡單嘗試

首先先定死metaspce的大小,不讓他動態擴容,因為元空間每次調整大小都會進行一次full gc。

jvm啟動參數新增。

-XX:MetaspaceSize=512m
-XX:MaxMetaspaceSize=512m

但是發現并沒有用。

是否能從堆看出些端倪?

堆外內存,沒有特別好的查看方法。我決定還是把堆內存dump下來看看,看能否通過堆內存,看出一些貓膩來。

將堆dump下來進行分析。

使用命令 jps 找到java進程pid,指定生成文件的path。

jmap -dump:file=/path ${pid}

dump完畢后。

借助工具進行查詢 首先使用mat,官方網站:https://www.eclipse.org/mat/。

圖片圖片

這邊看到了很多Netty的PoolThreaCache。

聯想到netty使用了直接內存,是否和這個有關呢?

為此查詢了大量資料,找到了一個參數:-Dio.netty.maxDirectMemory 。

這個參數大概意思是調整netty堆外內存,通過它有三個取值,無論調成什么都沒辦法阻止堆外內存的上漲。其實在這就有點無頭蒼蠅亂撞了。

確實,只有兩種情況會導致netty相關的堆外內存上漲。

1、要么是netty有bug 。

2、要么是使用方法不對。

netty有bug,這個可能性就算了吧。使用的版本也不是最新的,也沒有直接引用netty包,都是通過例如http-client或者rpc框架引入的netty。

使用方法不對?在http client或者rpc服務的部分代碼排查了一遍,基本上都是比較簡單的用法,并沒有直接設置很怪的參數,或者很非常規的操作。

在這就確實在堆里面找不到有用的線索了。

找到原因

貌似確實沒轍了。

隨后我請教了我司的超級大佬:森哥。森哥給我要了相關權限后,上去機器一頓操作。推測可能是C2 Compiler或者什么即時編譯導致的問題,因為堆外都是jvm級別的數據,常規的排查確實比較難找到線索。

聽完后聯想到堆外不就是方法區嗎,我用的java8 hotspot虛擬機,也就是元空間了。

代碼里面會有什么導致元空間上漲呢?

元空間是存儲jvm級別的數據,是否有很多類加載?

帶著這個猜想,找到相應的參數 -verbose:class,這個會將類加載全部打印出來。

如下圖:

圖片圖片

發現有非常多的ASMAccessorImpl_,而且是不會停止,一直在加載。

厚禮蟹,這就查到了原因。

那ASM是什么,如果研究過spring,就知道在aop擴展動態生成字節碼,最底層其實就是ASM生成的,其實是一個字節碼編輯框架。官網:https://asm.ow2.io/。

也就是說,我的代碼有一個地方一直在動態生成類字節碼,加載到方法區。從而導致堆外內存一直在上漲,從而導致full gc。

代碼修改

那怎么定位到是哪段代碼?

這個簡單,打開idea,double shift,調search everywhere。

圖片

排查到是mvel這個依賴框架生成的。

關于mvel,其實是spel差不多,表達式解析引擎。在項目中,mvel的使用我們只用了兩行代碼。

MVEL.executeExpression()
MVEL.compileExpression()

然后我們也有把編譯完的進行緩存,按道理說不會一直生成類的。因為mvel這個框架實在是相關文檔太少,沒人維護的感覺,抱著死馬當活馬醫的態度,去github上提一個issue,然后自己同時接著排查。

圖片

幸運的是這個框架還沒死絕,還有人回復。

大概意思是說,我問為什么使用你們的mvel會導致我jvm出現oom錯誤(頻繁的full gc),另外如果說每次編譯相同的內容的話,為什么沒有框架層面緩存起來。回答說是需要自己緩存的。

也就是我的代碼還是緩存失效了。

找到緩存的那一行,使用的是map,用key去查找的時候,發現用的是contains,而沒有用containsKey。這就導致了永遠查不到,也就導致了永遠會重新編譯。

圖片

經過修改后,問題得以解決。

圖片

一條平平的線,并且沒有full gc,皆大歡喜

圖片

總結

堆外內存有點難搞,難以和代碼聯系起來。提供一個思路:可通過-verbose:class查看類加載的情況,然后具體分析。

責任編輯:姜華 來源: 凱哥的Java技術活
相關推薦

2020-08-27 21:36:50

JVM內存泄漏

2017-01-11 14:02:32

JVM源碼內存

2022-06-15 16:04:13

Java編程語言

2025-06-16 07:40:00

2019-12-17 10:01:40

開發技能代碼

2020-05-09 13:49:00

內存空間垃圾

2014-02-27 13:30:26

CacheLinux系統內存不足

2021-06-01 09:29:43

ArthasJVM內存

2021-06-28 08:00:00

Python開發編程語言

2018-11-06 12:12:00

MySQL內存排查

2019-02-26 14:33:22

JVM內存虛擬機

2022-04-29 08:05:06

內存堆外GC

2024-10-10 15:32:51

2019-02-14 13:30:54

內存泄露運維

2022-11-09 17:10:47

JVM內存區域

2010-09-27 13:41:22

JVM內存回收

2024-08-19 00:10:00

C++內存

2015-07-20 10:23:24

NET內存問題排查

2022-04-15 07:51:12

off-heap堆外內存JVM

2022-09-21 08:39:52

堆外內存泄露內存分布
點贊
收藏

51CTO技術棧公眾號

久久久久久久综合色一本| 欧美军人男男激情gay| 亚洲一区二区av在线| 91嫩草在线| 日韩成人免费在线观看| 三级小说欧洲区亚洲区| 欧美日韩你懂的| 免费看毛片的网址| lutube成人福利在线观看| 久久国内精品自在自线400部| 久热99视频在线观看| 成人免费毛片日本片视频| 成人亚洲视频| 亚洲男同性视频| 久久亚洲免费| 国产精品亚洲欧美在线播放| 一本色道久久综合亚洲精品不| 在线国产精品视频| 日批免费观看视频| 男人亚洲天堂| 色综合久久久久久久久久久| 欧洲美女和动交zoz0z| 四虎电影院在线观看| 激情五月播播久久久精品| 2019亚洲日韩新视频| 日本黄色片免费观看| 首页亚洲中字| 欧美成人vr18sexvr| 九色91popny| 蜜桃视频m3u8在线观看| 亚洲乱码国产乱码精品精98午夜| 欧美一区观看| 免费观看成年人视频| 国产一区欧美二区| 国产精品色视频| 99精品人妻国产毛片| 在线欧美三区| 久久69精品久久久久久久电影好 | 男女啪啪免费视频网站| 欧美成人hd| 国产欧美日韩视频一区二区| 久久国产日韩欧美| 六月婷婷中文字幕| 国产不卡免费视频| 亚洲a中文字幕| 亚洲天堂aaa| 青青草91视频| 国产精品女人久久久久久| 国产嫩bbwbbw高潮| 亚洲一区二区毛片| 2019中文字幕免费视频| 精品成人久久久| 亚洲网址在线| 性色av一区二区三区红粉影视| 麻豆亚洲av成人无码久久精品| 久久久久久免费视频| 久久久999国产精品| 国产黄色片在线| 久久人人99| 最近2019年手机中文字幕| 成人在线手机视频| 日韩中文首页| 久久天天躁夜夜躁狠狠躁2022| 国产黄a三级三级| 欧美成人milf| 久99久在线视频| 精品少妇一二三区| 国产农村妇女精品一区二区| 26uuu亚洲国产精品| 日本免费在线观看视频| 日本91福利区| 91在线中文字幕| 丰满少妇在线观看bd| 丁香五精品蜜臀久久久久99网站| 成人精品一二区| 婷婷五月综合久久中文字幕| 久久婷婷成人综合色| 日韩三级在线播放| www免费在线观看| 亚洲国产精品久久不卡毛片 | 亚洲女同av| 91久久一区二区| 尤物国产在线观看| 亚洲国产中文在线| 亚洲精品自拍视频| 午夜国产福利视频| 国产精品扒开腿做爽爽爽软件| 97碰在线观看| 最新在线中文字幕| 高清在线观看日韩| 欧美在线日韩精品| 国产一二区在线| 性做久久久久久| 三级在线免费看| 亚洲免费一区三区| 亚洲欧美国产精品| 91视频免费在线看| 久久国产欧美| 亚洲一区二区三区久久| 午夜视频免费看| 日韩一区中文字幕| 国产精品va无码一区二区| 日韩制服一区| 精品成人在线观看| 中文字幕黄色网址| 一区免费视频| 91丨九色丨国产在线| 女人18毛片一区二区三区| 国产日产欧美一区| 国产xxxx振车| 婷婷激情成人| 亚洲欧美日韩直播| www.youjizz.com亚洲| 麻豆成人免费电影| 久久久久久99| 欧美xxxx免费虐| 欧美性受极品xxxx喷水| 污片免费在线观看| 亚洲精品网址| 国产伦精品免费视频| 国产精品一区二区av日韩在线| 激情亚洲一区二区三区四区| 国产原创精品在线| 日韩av三区| 欧美极品少妇xxxxⅹ裸体艺术| 亚洲天堂免费av| 久久久久久久久久久99999| bt天堂新版中文在线地址| 欧美久久久网站| 精品一区电影国产| 国产午夜精品无码| 国产福利不卡视频| 在线观看亚洲视频啊啊啊啊| 韩国美女久久| 日韩精品在线观看一区二区| 好吊色视频在线观看| 久久成人免费电影| 视频一区视频二区视频三区高| 欧美日韩在线观看首页| 亚洲精品在线一区二区| 国产av无码专区亚洲av毛网站| 美女精品自拍一二三四| 人偷久久久久久久偷女厕| 日本不卡免费高清视频在线| 精品国产91九色蝌蚪| 91精品国产高清一区二区三蜜臀| 九色综合狠狠综合久久| 亚洲人一区二区| 国产福利91精品一区二区| 一区二区三区四区视频| 国产无遮挡又黄又爽又色视频| 91网页版在线| 97xxxxx| 私拍精品福利视频在线一区| 性色av一区二区三区红粉影视| 日本美女一级片| 精品久久久久久中文字幕一区奶水 | 久久精品国产亚洲av麻豆| 99在线观看免费视频精品观看| 国产女人水真多18毛片18精品| 好看的中文字幕在线播放| 欧美sm美女调教| 国产乡下妇女做爰视频| 99久久婷婷国产| 777米奇影视第四色| 国产一区二区三区电影在线观看 | 久久影院在线观看| 国产高潮流白浆喷水视频| 一区二区三区在线观看动漫 | 26uuu国产一区二区三区| av动漫在线观看| 青青草综合网| 91成人免费在线观看| av老司机在线观看| 亚洲情综合五月天| 一级黄色录像大片| 亚洲自拍偷拍综合| 在线免费观看a级片| 老司机精品福利视频| 在线电影看在线一区二区三区| 午夜久久av| 欧美在线亚洲一区| 日本高清视频在线观看| 欧美zozozo| 特级西西444www大精品视频免费看| 国产婷婷色一区二区三区四区| 中文字幕22页| 亚洲日本成人| 一本一道久久a久久精品综合| 日韩在线亚洲| 国产成人a亚洲精品| 黄色网址在线免费| 亚洲激情在线视频| 一级久久久久久久| 色综合天天综合狠狠| 三级黄色在线观看| 9久草视频在线视频精品| 中文字幕第36页| 亚洲激情社区| 中文字幕av日韩精品| 老牛国内精品亚洲成av人片| 日本精品性网站在线观看| 黄色免费在线观看| 亚洲精品一区在线观看香蕉| 糖心vlog精品一区二区| 亚洲电影在线播放| 任我爽在线视频| 91麻豆国产精品久久| 欧美性受xxxx黒人xyx性爽| 另类av一区二区| 只有这里有精品| 精品国产乱码久久久| 国产亚洲自拍偷拍| 国产成人视屏| 国产精品wwwwww| 日本а中文在线天堂| 欧美精品在线极品| 色大18成网站www在线观看| 亚洲精品国产综合久久| www.黄色片| 欧美福利视频一区| 最近中文字幕免费观看| 欧美日韩精品二区| 国产在线拍揄自揄拍| 最新国产成人在线观看| 久久成人激情视频| 91视频你懂的| 波多野结衣视频播放| 国产成人精品一区二| 午夜一区二区视频| 免费成人在线观看| 毛葺葺老太做受视频| 一区二区高清| 日本在线xxx| 日韩午夜在线电影| 国产一区二区三区小说| 一区二区影视| 只有这里有精品| 欧美在线网址| 午夜啪啪福利视频| 99re6这里只有精品| 亚洲精品中文综合第一页| 欧美精品第一区| 免费一区二区三区在在线视频| 精品国产影院| 久久精品国产一区二区三区日韩| 粉嫩久久久久久久极品| 国产高清精品一区二区三区| 欧美专区一区| www.久久艹| 国产亚洲精品美女久久| 精品国产乱码久久久久久88av| 伊人久久亚洲| 国产成人一区二区三区免费看| 亚洲不卡视频| 国产精品久久波多野结衣| 伊人久久大香线蕉av超碰| 国产精品视频免费观看| 加勒比色老久久爱综合网| 国内一区二区在线视频观看 | 精品久久人人做人人爰| 亚洲欧美高清视频| 亚洲精品电影在线| 精华区一区二区三区| 在线观看日韩欧美| 麻豆传媒视频在线观看免费| 久久久91精品| 久久亚洲导航| 日本久久久久久久久| 福利视频亚洲| 亚洲最大福利视频| 美女一区二区在线观看| 日韩精品不卡| 大色综合视频网站在线播放| 亚洲狠狠婷婷综合久久久| 一个色综合网| 日韩精品视频久久| 久久国产免费看| 无码国产精品一区二区免费式直播| 91丨porny丨蝌蚪视频| 亚洲区自拍偷拍| 亚洲乱码中文字幕综合| 色网站在线播放| 欧美日本在线一区| 狠狠综合久久av一区二区| 亚洲人av在线影院| а√天堂官网中文在线| 51色欧美片视频在线观看| 国产精品成人国产| 国产91视觉| 日韩欧美综合| 国产玉足脚交久久欧美| 日韩不卡一区二区| 图片区偷拍区小说区| 国产日韩欧美激情| 国产无码精品在线观看| 欧美日韩一区二区三区在线看 | 亚洲女人被黑人巨大进入al| 蜜芽在线免费观看| 欧洲亚洲妇女av| 婷婷综合国产| 一区二区在线观| 久久成人精品| 日本一区二区免费视频| 国产精品天美传媒沈樵| 91浏览器在线观看| 日韩一二三区视频| av网站大全在线观看| 97在线视频观看| 视频欧美一区| 正在播放精油久久| 日韩成人午夜精品| 亚洲国产精品自拍视频| 亚洲欧美日韩国产综合在线| 亚洲国产精品无码久久久| 亚洲第一区在线| 中文字幕有码在线观看| 国产精品国内视频| 日韩精品免费一区二区夜夜嗨 | 99国产精品无码| 大伊人狠狠躁夜夜躁av一区| 国产高清精品软件丝瓜软件| 尤物99国产成人精品视频| 国产网站在线| 国产精品久久精品国产| 午夜精品网站| 亚洲黄色片免费看| 中文字幕在线不卡国产视频| 亚洲熟女综合色一区二区三区| 精品久久一二三区| 美女91在线| av一区二区三区免费| 中文字幕免费一区二区| 男人午夜视频在线观看| 国产精品色婷婷| 国产三级理论片| 在线播放国产精品| 日本免费久久| 日韩高清国产精品| 日本欧美在线观看| 国产无遮挡在线观看| 欧洲精品视频在线观看| 黄色av网站在线看| 国产精品第一页在线| 精品国精品国产自在久国产应用| 黑鬼大战白妞高潮喷白浆| 久久香蕉国产线看观看99| 日韩美一区二区| 亚洲欧洲国产伦综合| 日韩不卡免费高清视频| 视频一区二区三| 久久aⅴ国产欧美74aaa| 国产精品免费人成网站酒店| 91精品久久久久久久91蜜桃| 国产精品实拍| 超碰97网站| 亚洲精品视频啊美女在线直播| xxxx黄色片| 色香蕉成人二区免费| 国产美女性感在线观看懂色av| 国产成人免费av电影| 久久国产亚洲精品| 三级性生活视频| 亚洲一区二区偷拍精品| 亚洲 小说区 图片区 都市| 5566成人精品视频免费| 欧美伦理在线视频| 午夜啪啪小视频| 一个色综合网站| 天堂a√在线| 国产日韩精品在线播放| 欧美福利一区| 黄色av网址在线观看| 一本色道久久综合亚洲精品按摩| av女优在线| 97在线电影| 久久动漫亚洲| 在线看的片片片免费| 亚洲国产成人久久| 亚洲mmav| 999一区二区三区| 欧美激情综合五月色丁香小说| 97精品人妻一区二区三区香蕉 | 奇米影视首页 狠狠色丁香婷婷久久综合| 日韩和欧美的一区| 无码人妻精品一区二区三区夜夜嗨| 欧美成人综合网站| 欧美18—19sex性hd| 久久久久亚洲av无码专区喷水| 99久久综合精品| 伊人网中文字幕| 97热在线精品视频在线观看| 不卡av一区二区| 男人的天堂影院| 欧美日韩国产a| a欧美人片人妖| 丰满人妻一区二区三区53号| 91视频xxxx| 国产视频在线观看免费| 欧美一区二三区|