精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲福利视频网| 99在线视频精品| 久久精品一偷一偷国产| 久久久久无码国产精品一区李宗瑞| 91福利区在线观看| 亚洲国产精品精华液ab| 国产精品18毛片一区二区| 中文字幕在线天堂| 欧美午夜在线| 日韩中文字幕在线播放| 精品无码人妻少妇久久久久久| 久久久成人av毛片免费观看| 亚洲国产一区二区三区青草影视| 秋霞在线观看一区二区三区| 丰满肉嫩西川结衣av| 免费成人在线视频观看| 7777精品视频| 久久久综合久久| 国产高清久久| 亚洲热线99精品视频| 制服.丝袜.亚洲.中文.综合懂| 播放一区二区| 精品成人乱色一区二区| 久久国产精品免费观看| 国产私拍精品| 97精品久久久午夜一区二区三区| 99国内精品久久久久久久软件| 在线观看免费视频一区| 久久人人超碰| 欧美大片免费观看在线观看网站推荐| av在线播放中文字幕| 亚洲综合小说图片| 日韩成人中文字幕| 图片区偷拍区小说区| 性欧美video另类hd尤物| 在线影院国内精品| 国产免费人做人爱午夜视频| 午夜影院在线播放| 亚洲www啪成人一区二区麻豆| 青少年xxxxx性开放hg| 午夜不卡视频| 国产精品乱码妇女bbbb| 午夜精品区一区二区三| 国产免费永久在线观看| 国产亚洲一二三区| 日韩.欧美.亚洲| 精品三级久久久久久久电影聊斋| 久久人人97超碰com| 久久av免费一区| 五月色婷婷综合| 99精品欧美一区二区蜜桃免费| 国产一区二区不卡视频在线观看| 黄色成人一级片| a级精品国产片在线观看| 国产精品久久久久久久久久久久午夜片| 国产chinasex对白videos麻豆| 韩国三级中文字幕hd久久精品| 成人精品久久久| 国产又大又粗又长| 国产剧情av麻豆香蕉精品| 91影院未满十八岁禁止入内| 丰满人妻一区二区三区免费视频| 暴力调教一区二区三区| 久久久久一区二区| 国产永久免费高清在线观看 | 国产精品久久久久久久久影视| 国产成人自拍偷拍| 久久精品国产77777蜜臀| 国产在线播放91| 国产美女自慰在线观看| 国产成人精品免费在线| 精品国产一区二区三区麻豆免费观看完整版| 神马午夜精品95| 91社区在线播放| 日本亚洲导航| 黄网站在线免费看| 一区二区成人在线观看| 国产成人黄色片| 日韩欧乱色一区二区三区在线 | 国产区视频在线播放| 国产精品精品国产色婷婷| 蜜臀av.com| 手机在线观看av| 欧美另类高清zo欧美| 香蕉视频免费网站| 精品国产aⅴ| 欧美另类高清videos| 午夜毛片在线观看| 国产又黄又大久久| 精品999在线观看| aⅴ在线视频男人的天堂 | 综合国产在线视频| 久久久www成人免费毛片| 久久伊人亚洲| 99久热re在线精品996热视频| 完全免费av在线播放| 青青草久久伊人| 日韩精选在线| 久久天天躁狠狠躁老女人| 精品国产免费观看| 国产精品综合网| 天堂精品一区二区三区| av在线网页| 欧美久久一二区| 加勒比一区二区| 极品日韩av| 成人中文字幕在线观看| 黄色av免费在线看| 亚洲妇女屁股眼交7| 91女神在线观看| 亚洲男人都懂第一日本| 欧美大片在线看免费观看| 欧美激情一区二区三区免费观看 | 欧美日韩午夜视频| 丝袜a∨在线一区二区三区不卡| 成人综合av网| 国产一区久久精品| 欧美色综合影院| 亚洲专区区免费| 亚洲成人在线| 国产精品日韩一区二区| v天堂福利视频在线观看| 欧美亚洲国产bt| 日韩av在线看免费观看| 99亚洲一区二区| 国产精品日韩二区| 久草在线新免费首页资源站| 欧美一级理论片| 国产一区二区三区视频播放| 日韩电影一区二区三区四区| 麻豆传媒一区| 秋霞伦理一区| 精品亚洲一区二区三区在线观看 | 欧美日本国产视频| 日韩女同一区二区三区| 日韩精品91亚洲二区在线观看| 久久爱av电影| 日韩电影免费看| 亚洲精品福利在线| 天海翼一区二区| 不卡一区中文字幕| 欧美精品久久久久久久久久久| 99香蕉久久| 国内精久久久久久久久久人| 可以免费看毛片的网站| 亚洲成人av一区| 漂亮人妻被黑人久久精品| 在线欧美福利| 美脚丝袜一区二区三区在线观看| 成人美女黄网站| 国产午夜精品全部视频播放| 亚洲av无码乱码国产精品fc2| 久久久噜噜噜久噜久久综合| 亚洲精品高清无码视频| 色婷婷亚洲mv天堂mv在影片| 国产综合在线观看视频| 在线看女人毛片| 欧美精品一区二区三| 一级片中文字幕| 日本一区二区免费在线| 日韩成人av免费| 好看的日韩av电影| 久久99精品久久久久子伦| 日韩成人av电影| 中文字幕欧美国内| 国产黄色片av| 欧美日韩午夜视频在线观看| 免费黄色片网站| 韩国三级中文字幕hd久久精品| 欧美狂野激情性xxxx在线观| 亚洲人成网www| 国产精品免费久久久久久| 国产精品va在线观看视色| 欧美xxxxxxxx| 欧美brazzers| 亚洲日本一区二区三区| a天堂视频在线观看| 日av在线不卡| 日韩欧美一级在线| 视频一区中文| 91免费版黄色| 人人视频精品| 欧美国产高跟鞋裸体秀xxxhd| 欧美日本韩国一区二区| 91麻豆精品国产91久久久久久| 国产第一页在线播放| 国产欧美日韩另类视频免费观看 | 中文字幕 人妻熟女| 亚洲另类色综合网站| 熟女少妇一区二区三区| 国产精品69毛片高清亚洲| 国产91美女视频| 亚洲精品tv久久久久久久久久| 久99久视频| 96视频在线观看欧美| 91产国在线观看动作片喷水| 成人免费视屏| 国产一区二区三区18| 亚洲高清在线观看视频| 欧美视频完全免费看| 日韩男人的天堂| 亚洲品质自拍视频网站| 美女爆乳18禁www久久久久久 | 99中文字幕| 99久久久国产精品免费调教网站| 欧美激情亚洲自拍| 免费在线看黄网站| 亚洲图中文字幕| 天天干天天摸天天操| 日韩一区二区三区电影在线观看| 国产一区免费看| 午夜精品久久久久久久久久| 岛国毛片在线观看| 国产精品伦理一区二区| 中文字幕国产专区| 91久色porny| 久久精品无码专区| 国产精品中文欧美| 毛片毛片毛片毛| 日本成人中文字幕| 国产a级片免费观看| 国产亚洲在线| 人妻av中文系列| 欧美激情日韩| 日韩视频一二三| 综合天天久久| 日本一区二区免费高清视频| 日韩精品永久网址| 天堂√在线观看一区二区| 制服丝袜日韩| 麻豆av一区二区| 最近国产精品视频| 免费av在线一区二区| 日韩精品免费一区二区夜夜嗨 | 成年人视频网站在线| 精品五月天久久| 三级黄视频在线观看| 日韩精品视频在线观看免费| 天天干,天天操,天天射| 亚洲成人网av| 四季av日韩精品一区| 亚洲国产成人在线播放| 日本xxxxwww| 亚洲精品91美女久久久久久久| 三级小视频在线观看| 亚洲精品不卡在线| 欧美日韩在线中文字幕| 亚洲人成网站免费播放| 国产永久免费高清在线观看 | 日韩黄色中文字幕| 国产精品国产三级国产aⅴ原创| 成人18视频免费69| 综合久久国产九一剧情麻豆| 波多野结衣亚洲一区二区| 亚洲精品国产一区二区三区四区在线| 欧美日韩在线观看免费| 亚洲午夜精品17c| 久久国产精品免费看| 色国产综合视频| 国产精品久久久久久久久久久久久久久久久久 | 成 人 免费 黄 色| 日韩大陆欧美高清视频区| 香蕉久久一区二区三区| 国产香蕉97碰碰久久人人| 香蕉视频在线免费看| 欧美成人免费在线观看| 国产美女精品写真福利视频| 日韩美女写真福利在线观看| 欧美a视频在线| 97人人干人人| 妖精一区二区三区精品视频| 亚洲看片网站| 国产精品videosex极品| 日本精品一区在线观看| 蜜桃精品视频在线| 久草福利在线观看| 久久久久国产精品免费免费搜索| 亚洲色图100p| 亚洲mv在线观看| 最新在线中文字幕| 精品日本一线二线三线不卡| 日韩私人影院| 欧美xxxx14xxxxx性爽| 欧美gv在线| 2014亚洲精品| 国产一区国产二区国产三区| 亚洲精品天堂成人片av在线播放| 免费在线亚洲欧美| 992kp免费看片| 久久久亚洲高清| 青青草手机在线视频| 在线日韩国产精品| 天天躁日日躁狠狠躁喷水| 中文综合在线观看| 色吧亚洲日本| 亚洲最大成人免费视频| 国产一区二区三区天码| 欧美一级免费播放| 狠狠色伊人亚洲综合成人| 精品人妻互换一区二区三区 | 亚洲欧美日韩激情| 日韩精品在线看片z| 91精彩视频在线播放| 欧美在线视频网站| 国产精品色呦| 国产奶头好大揉着好爽视频| 视频一区中文字幕| 波多野结衣加勒比| 亚洲激情在线播放| 一二三区在线播放| 亚洲深夜福利在线| 国产精品一区二区日韩| 成人免费视频视频在| 亚洲精品网址| 亚洲人视频在线| 欧美激情一区二区三区在线| 好看的av在线| 精品蜜桃在线看| 日本精品600av| 亚洲综合在线中文字幕| 小小影院久久| 在线观看免费av网址| 欧美激情一二三区| 天天射天天干天天| 亚洲欧洲xxxx| 性感女国产在线| 久久99精品久久久久久水蜜桃| 好吊视频一区二区三区四区| 无码国产精品久久一区免费| 亚洲激情图片小说视频| 国产精品一区二区免费视频| 中文字幕亚洲一区二区三区| av成人在线观看| 日韩精品大片| 日本欧洲一区二区| 国产调教在线观看| 欧美私人免费视频| 日本在线免费看| 91免费福利视频| 中文字幕一区二区三区欧美日韩| 日韩视频在线观看一区二区三区| 最新热久久免费视频| 国产精品一级视频| 久久福利网址导航| 91夜夜蜜桃臀一区二区三区| 青草视频在线观看视频| av在线这里只有精品| 青草视频在线观看免费| 亚洲女人天堂网| www.久久.com| 大桥未久一区二区三区| 国产99久久久国产精品| 久久不卡免费视频| 亚洲无av在线中文字幕| 久久xxx视频| 亚洲欧美一二三| 国产91对白在线观看九色| 久久露脸国语精品国产91| 亚洲美女av在线播放| 日韩在线观看不卡| 喜爱夜蒲2在线| 成人免费视频免费观看| 久久久久久在线观看| 日韩在线观看免费高清完整版| 国产精品美女久久久久人| 91黄色在线看| 国产欧美一区二区精品性| 国产精品久久久久久久一区二区| 欧美激情视频一区| 欧美精品momsxxx| www.成人黄色| 天天操天天综合网| 成人午夜影视| 成人3d动漫一区二区三区91| 久热综合在线亚洲精品| 三上悠亚作品在线观看| 亚洲国产成人av在线| 另类中文字幕国产精品| 日韩久久久久久久久久久久| 久久综合国产精品| 国产视频一区二区三| 5566日本婷婷色中文字幕97| 欧美丰满老妇| www.久久国产| 91精品国产黑色紧身裤美女| 女人让男人操自己视频在线观看| 中文字幕剧情在线观看一区| av中文一区二区三区| 亚洲最新av网站| 欧洲亚洲免费在线| 亚洲一区二区| av电影在线不卡| 精品国产3级a| 国产亚洲精品精品国产亚洲综合| 国产中文字幕二区| 成人免费在线播放视频| 欧美视频免费一区二区三区| 99中文字幕| 激情av综合网| 18国产免费视频|