国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

關(guān)于數(shù)組動(dòng)態(tài)擴(kuò)容導(dǎo)致頻繁GC的問題,我還有話說

開發(fā) 開發(fā)工具
CMSScavengeBeforeRemark這個(gè)參數(shù)本意是希望在CMS GC remark之前做一次YGC,正常情況下其實(shí)是會(huì)做一次YGC的,這個(gè)參數(shù)的好處是如果YGC比較有效果的話是能有效降低remark的時(shí)間長度,可以簡單理解為如果大部分新生代的對象被回收了,那作為根的部分少了,從而提高了remark的效率。

[[188968]]

概述

通過上篇關(guān)于數(shù)組動(dòng)態(tài)擴(kuò)容導(dǎo)致頻繁GC的文章假笨說-又抓了一個(gè)導(dǎo)致頻繁GC的鬼--數(shù)組動(dòng)態(tài)擴(kuò)容大家或許GET到了這么一些點(diǎn)。

  • List里新數(shù)組在新生代分配
  • 通過老生代使用率達(dá)到了閾值觸發(fā)的CMS GC,會(huì)把新生代里的對象作為GC ROOT的一部分,從而阻止了那些byte數(shù)組被回收
  • 通過-XX:+CMSScavengeBeforeRemark這個(gè)參數(shù)可以解決這個(gè)問題

那是否還想過這么一些問題呢?

  • List里新數(shù)組是否可以在老生代分配?
  • -XX:+CMSScavengeBeforeRemark該參數(shù)是否一定會(huì)觸發(fā)YGC?

接下來主要圍繞這兩個(gè)問題展開,算是對上篇文章的一個(gè)補(bǔ)充

新數(shù)組在哪里分配

老實(shí)說,如果之前線上碰到的那個(gè)問題新數(shù)組是在老生代分配的話,那就不會(huì)有上篇文章,更不會(huì)有這篇文章,但是到底有沒有可能在老生代分配呢?其實(shí)是有可能的。

上面的代碼是慢速路徑分配的代碼,先判斷是否應(yīng)該到新生代分配

其中_pretenure_size_threshold_words的值是jvm參數(shù)PretenureSizeThreshold指定的,如果我們指定了這個(gè)值,那意味著如果我們單次要求分配的超過了這個(gè)值就想到老生代去分配,當(dāng)然這個(gè)值默認(rèn)是0,表示不會(huì)對對象的大小做check,都優(yōu)先到新生代分配。

如果不到新生代分配,或者新生代分配不了,然后有判斷是否會(huì)到老生代分配的條件。

  • 如果要分配的內(nèi)存超過了eden大小,那毫無疑問只能到老生代分配了
  • 如果GC_locker正在起作用,有線程正在通過JNI操作臨界內(nèi)存,并且操作完之后會(huì)觸發(fā)一次gc的話,那先到old分配解燃眉之急。
  • 如果上一次YGC效果并不好,比如晉升失敗,或者因?yàn)轭A(yù)測到上一次YGC可能是一次失敗的YGC而沒做YGC了等,那就直接到老生代分配吧!

所以新的數(shù)組分配還是有各種可能在老生代分配的,因?yàn)殡S著數(shù)組的不斷擴(kuò)容,數(shù)組也會(huì)變得越來越大,當(dāng)大到某個(gè)程度,或者到上面的某個(gè)條件成立的時(shí)候,還是可能在老生代直接分配的。

那如果新數(shù)組是在老生代分配的話,那經(jīng)過CMS GC就會(huì)將老生代里不可達(dá)的那個(gè)新數(shù)組給回收了,那就不存在新生代指向老生代的跨代引用,因而其實(shí)并不會(huì)發(fā)生這樣的問題。

CMSScavengeBeforeRemark一定能觸發(fā)YGC嗎

CMSScavengeBeforeRemark這個(gè)參數(shù)本意是希望在CMS GC remark之前做一次YGC,正常情況下其實(shí)是會(huì)做一次YGC的,這個(gè)參數(shù)的好處是如果YGC比較有效果的話是能有效降低remark的時(shí)間長度,可以簡單理解為如果大部分新生代的對象被回收了,那作為根的部分少了,從而提高了remark的效率。

但是,但是這個(gè)YGC一定會(huì)發(fā)生嗎?下面對CMS GC remark之前你看到的現(xiàn)象分為三種情況:

  • 你壓根看不到Y(jié)GC的日志
  • 你可以看到Y(jié)GC日志,同時(shí)能看到內(nèi)存被回收了
  • 你可以看到Y(jié)GC日志,但是發(fā)現(xiàn)內(nèi)存根本沒被回收

對于看不到GC日志的情況,可以肯定是沒有發(fā)生YGC,這種情況通過是因?yàn)樯厦嫣岬降腉C_locker導(dǎo)致的,有線程正在訪問臨界區(qū)的內(nèi)存,訪問這些內(nèi)存的時(shí)候是不允許發(fā)生GC的,因?yàn)樗麄冋谥苯硬僮鲀?nèi)存,而GC是會(huì)對對象做遷移的。另外你可能平時(shí)還會(huì)觀察到一個(gè)非常奇怪的現(xiàn)象,偶爾你會(huì)看到有連續(xù)的兩次YGC,其中后面那一次你會(huì)看到新生代使用的內(nèi)存其實(shí)非常少但是也觸發(fā)了一次YGC,其實(shí)就是因?yàn)镚C_locker有補(bǔ)償GC的邏輯。

對于第二種情況,你看到了YGC日志,同時(shí)也發(fā)現(xiàn)內(nèi)存被回收了,這個(gè)毫無疑問,就是真的做了一次正常的YGC。

對于第三種情況,其實(shí)可能并沒有做YGC,當(dāng)然也不排除確實(shí)做了YGC,但是確實(shí)效果不好的情況,那什么情況下會(huì)不做YGC呢,我們看看下面在做YGC之前的代碼。

如果這個(gè)判斷成立,那就直接return了。

而collection_attempt_is_safe在ParNew下的實(shí)現(xiàn)如下

***一條相對比較關(guān)鍵,具體實(shí)現(xiàn)如下:

如果老生代可用的空間足以容得下之前的新生代平均晉升的size,或者容的下新生代現(xiàn)在使用的size,那說明是可以正常做YGC的,那接下來就會(huì)準(zhǔn)備做YGC,但是如果上面的條件都不滿足,那就會(huì)認(rèn)為這次YGC做起來會(huì)沒什么效果,或者比較危險(xiǎn),***不做,于是就會(huì)直接返回,但是這種情況下,YGC的日志還是照常會(huì)打的,你看到的現(xiàn)象就是YGC前后內(nèi)存大小不變。

總結(jié)

還是總結(jié)下吧,針對動(dòng)態(tài)數(shù)組擴(kuò)容的問題,可以有兩種情況

  • 如果新擴(kuò)容的數(shù)組是在老生代的,如果該數(shù)組不可達(dá)了,那經(jīng)過CMS GC是會(huì)回收數(shù)組里的內(nèi)容的。
  • 如果新擴(kuò)容的數(shù)組是在新生代的,如果該數(shù)組不可達(dá)了,CMSScavengeBeforeRemark無法完全保證YGC能順利進(jìn)行,如果真的做了YGC,那肯定可以回收掉數(shù)組里的不可達(dá)的那些byte數(shù)組,如果因?yàn)楦鞣N限制導(dǎo)致YGC并沒有做,那還是無法回收掉數(shù)組里面的內(nèi)容。

【本文是51CTO專欄作者李嘉鵬的原創(chuàng)文章,轉(zhuǎn)載請通過微信公眾號(你假笨,id:lovestblog)聯(lián)系作者本人獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2017-04-17 11:07:19

GC數(shù)組動(dòng)態(tài)擴(kuò)容

2025-08-11 02:00:52

2025-03-31 04:25:00

2014-03-26 11:15:26

Hive

2012-08-16 10:43:10

GC

2021-11-12 08:07:31

SQL緩存RabbitMQ

2009-06-24 17:32:40

動(dòng)態(tài)加載AppDoma

2023-04-30 12:44:28

GC應(yīng)用性能

2020-02-16 11:13:39

遠(yuǎn)程辦公工具技術(shù)

2010-08-25 10:24:40

2025-10-13 01:30:00

2020-10-23 06:56:00

C語言動(dòng)態(tài)字符串

2021-11-19 11:36:42

語言string字符串

2009-01-11 10:23:00

網(wǎng)絡(luò)掉線頻繁掉線

2012-05-15 09:49:03

TIME_WAITMySQL

2017-06-09 08:49:07

加載器Full GCJVM

2022-02-22 11:50:16

Python字典代碼

2021-01-19 05:46:45

背包數(shù)組容量

2023-07-04 08:09:05

數(shù)據(jù)庫選型集中式

2010-07-20 16:14:42

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

久久久久久亚洲精品| 91黄色在线看| 欧美美女被草| 欧美日韩精品一区二区三区四区 | 亚洲人成精品久久久久| 国产资源在线视频| 免费在线看一区| 黄色99视频| 亚洲精品字幕| 蜜桃成人在线| 日韩电影在线观看网站| 欧美18视频| 亚洲在线国产日韩欧美| 久久精品国产精品国产精品污| 91tv官网精品成人亚洲| 5566中文字幕一区二区| 亚洲破处大片| 国产66精品久久久久999小说| 在线中文字幕亚洲| 超碰97国产在线| 亚洲午夜av| 久久久综合香蕉尹人综合网| 久久久精品网| 亚洲精品tv久久久久久久久| 日韩avvvv在线播放| 中文字幕综合在线观看| 国产精品一二三| 久久久噜噜噜www成人网| 久久久久久久性| 九色在线91| 日韩欧美中文字幕在线观看| 欧美高清视频| 日韩精品在线视频| 国产精品诱惑| 日本高清视频一区| 影视一区二区| 亚洲精品自在在线观看| 成人黄色网址在线观看| 亚洲第一狼人区| 亚洲一区精品在线| 69久久夜色| 亚洲欧美综合v| 超碰cao国产精品一区二区| 日韩av手机在线| 中文字幕日韩一区二区不卡| 久久青青草综合| 高清国产一区二区三区| 在线免费观看av的网站| 精品国产电影一区| 日本在线视频网址| 久久中文字幕国产| 国产亚洲一卡2卡3卡4卡新区| 99视频在线播放| 国产乱码精品一品二品| 成人av影视| 欧美色综合天天久久综合精品| 成人影院在线视频| 98视频在线噜噜噜国产| 亚洲福利一区| 99精品免费在线观看| 精品福利在线看| 永久免费毛片在线播放| 97碰碰碰免费色视频| 国产美女一区| 欧美日韩一区二区三区69堂| 欧美另类一区二区三区| 欧洲大片精品免费永久看nba| 成人午夜激情网| 国产一区二三区| 97国产在线| 亚洲欧美日韩在线一区| 精品久久综合| 一区二区三区日韩视频| 洋洋成人永久网站入口| 国产99在线| 成人春色激情网| 99久久精品国产观看| 色综合久久影院| 国内精久久久久久久久久人| 日韩经典中文字幕一区| 亚洲性图一区二区| 日韩av在线免费观看一区| 日韩精品久久| 成年网站在线免费观看| 欧美一级午夜免费电影| 国产精品密蕾丝视频下载| 裸体大乳女做爰69| 色综合久久久久综合体桃花网| 999色成人| 日韩中文字幕一区| 亚洲午夜久久久久久久久电影院| 日本不良网站在线观看| 亚洲字幕一区二区| 亚洲欧洲日韩av| 精品网站在线| 亚洲 国产 欧美一区| 欧美日韩福利电影| 欧美最新精品| 日本最新在线视频| av高清在线| 欧美黄色小说| www在线视频| 国产综合色在线观看| 色综合.com| 国产免费不卡| 成人做爰视频www网站小优视频| 成人网18免费网站| 色综合电影网| 欧美精品一区二区三区蜜臀| 69sex久久精品国产麻豆| 欧美美女在线直播| 午夜免费福利小电影| 国产精品精品视频| 国产精品一二三在线| yw.139尤物在线精品视频| 日本国产一区二区| 午夜电影一区二区三区| 91精品午夜视频| 亚洲欧美中文另类| 色婷婷亚洲婷婷| 九九**精品视频免费播放| 亚洲a∨精品一区二区三区导航| 女同视频在线观看| 欧美少妇一区二区三区| 国产精品国模在线| 成人免费自拍视频| 欧美贵妇videos办公室| 亚洲精品久久久久久久久久久久 | 自拍自偷一区二区三区| 高清国产福利在线观看| 免费网站永久免费观看| 国内成人精品一区| 欧美怡红院视频| 亚洲国产毛片aaaaa无费看| 成人精品亚洲人成在线| 国产乱人伦偷精品视频不卡| 久久国产精品亚洲人一区二区三区 | 国产调教视频在线观看| 两个人hd高清在线观看| 无码精品a∨在线观看中文| 高清国语自产拍免费一区二区三区| 韩国欧美国产1区| 在线不卡日本v二区707| 卡通动漫精品一区二区三区| 免费的黄网站在线观看| 在线播放欧美女士性生活| 欧美一级xxx| 精品美女一区二区三区| 国产一区二区三区在线观看视频| 欧美黑人一级爽快片淫片高清| 国模吧一区二区| 一区二区三区国产在线观看| 国产一区二区三区视频免费| 亚洲色图色老头| 精品亚洲国产视频| 亚洲跨种族黑人xxx| 一本大道av一区二区在线播放| 亚洲精品99久久久久| 久久精品亚洲精品国产欧美kt∨| 亚洲国产精品一区二区久久| 欧美日韩高清不卡| 国产激情视频一区| 成人午夜影院| 成人亚洲一区二区三区| 欧美另类极限扩张| 国产精品白丝一区二区三区| 亚洲黑丝一区二区| 欧美做受69| 国产精品综合二区| 精品久久久久久电影| 日韩一区二区三区精品视频第3页| 色阁综合av| 视频直播国产精品| 一区二区三区欧美| 奇米色一区二区| 美女一区2区| 四虎影院观看视频在线观看 | 精品在线观看一区二区| 亚洲美女激情视频| 91av亚洲| 国产xxxxx18| 手机在线观看国产精品| 久久免费高清视频| 91麻豆精品国产91久久久久久久久| 成人涩涩免费视频| 亚洲女同中文字幕| 国产精品一区二区免费福利视频 | 国产在线视频2019最新视频| 日韩欧美一区在线| 国产精品超碰97尤物18| 久久久综合网| 久久av免费看| 欧美成人黑人| 日韩av片电影专区| 欧美一级黄色片| 国产精品久久久久aaaa| 久久亚洲一区| 不卡一区综合视频| 91麻豆精品国产91久久久更新资源速度超快| 四虎影视在线观看2413|