成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面試官:咱們今天就淺談JVM三色標(biāo)記法,我:這也問?

開發(fā) 前端
三色標(biāo)記算法是根可達(dá)算法的一種實(shí)現(xiàn)方案,其目的是為了找出所有可達(dá)對(duì)象。三色標(biāo)記算法會(huì)產(chǎn)生多標(biāo)和漏標(biāo)問題,其中漏標(biāo)問題最嚴(yán)重。漏標(biāo)問題會(huì)導(dǎo)致本該存活的對(duì)象被回收,從而導(dǎo)致嚴(yán)重的程序問題。

1.前言

三色標(biāo)記算法,用于垃圾回收器升級(jí),將STW變?yōu)椴l(fā)標(biāo)記。STW就是在標(biāo)記垃圾的時(shí)候,必須暫停程序,而使用并發(fā)標(biāo)記,就是程序一邊運(yùn)行,一邊標(biāo)記垃圾。

2. 三色標(biāo)記算法

2.1.什么是三色:

首先我們需要知道三色標(biāo)記法就是根據(jù)可達(dá)性分析,從GC Roots開始進(jìn)行遍歷訪問,在遍歷對(duì)象過程中,按“是否檢查過”這個(gè)條件將對(duì)象標(biāo)記成三種顏色:

  • 黑色: 代表對(duì)象已經(jīng)檢查過,且成員對(duì)象也被檢查過了。如果有其他對(duì)象引用指向了黑色對(duì)象,無須重新檢查一遍。黑色對(duì)象不可能直接(不經(jīng)過灰色對(duì)象)指向某個(gè)白色對(duì)象。
  • 灰色代表對(duì)象已經(jīng)檢查過,但成員還沒全部檢查完成
  • 白色代表對(duì)象沒有被檢查。 在可達(dá)性分析剛剛開始的階段, 所有的對(duì)象都是白色的, 若在分析結(jié)束的階段, 仍然是白色的對(duì)象, 即代表不可達(dá)。

2.2.三色標(biāo)記過程:

假設(shè)現(xiàn)在有白、灰、黑三個(gè)集合(表示當(dāng)前對(duì)象的顏色),其遍歷訪問過程為:

  1. 初始時(shí),所有對(duì)象都在【白色集合】中;
  2. 將 GC Roots直接引用到的對(duì)象挪到【灰色集合】中;
  3. 從灰色集合中獲取對(duì)象:

3.1. 將本對(duì)象引用到的其他對(duì)象全部挪到【灰色集合】中;

3.2. 將本對(duì)象挪到【黑色集合】里面。

  1. 重復(fù)步驟3,直至【灰色集合】為空時(shí)結(jié)束。
  2. 結(jié)束后,仍在【白色集合】的對(duì)象即為GC Roots不可達(dá),可以進(jìn)行回收。

需要注意,傳統(tǒng)標(biāo)記方式發(fā)生Stop The World時(shí),對(duì)象間的引用是不會(huì)發(fā)生變化的,可以輕松完成標(biāo)記。

而并發(fā)標(biāo)記在標(biāo)記期間應(yīng)用線程還在繼續(xù)跑,對(duì)象間的引用可能發(fā)生變化,就會(huì)出現(xiàn)錯(cuò)標(biāo)和漏標(biāo)的情況就有可能發(fā)生。

3.存在的問題

3.1.浮動(dòng)垃圾:標(biāo)記過不是垃圾的,變成了垃圾

并發(fā)標(biāo)記的過程中,若一個(gè)已經(jīng)被標(biāo)記成黑色或者灰色的對(duì)象,突然變成了垃圾,此時(shí),此對(duì)象不是白色的不會(huì)被清除,重新標(biāo)記也不能從GC Root中去找到,所以成為了浮動(dòng)垃圾,這種情況對(duì)系統(tǒng)的影響不大,留給下一次GC進(jìn)行處理即可。

3.2.對(duì)象漏標(biāo)問題:需要的對(duì)象被回收

并發(fā)標(biāo)記的過程中,一個(gè)業(yè)務(wù)線程將一個(gè)未被掃描過的白色對(duì)象斷開引用成為垃圾(刪除引用),同時(shí)黑色對(duì)象引用了該對(duì)象(增加引用)(這兩部可以不分先后順序);

因?yàn)楹谏珜?duì)象的含義為其屬性都已經(jīng)被標(biāo)記過了,重新標(biāo)記也不會(huì)從黑色對(duì)象中去找,導(dǎo)致該對(duì)象被程序所需要,卻又要被GC回收,此問題會(huì)導(dǎo)致系統(tǒng)出現(xiàn)問題。

4.總結(jié)

三色標(biāo)記算法是根可達(dá)算法的一種實(shí)現(xiàn)方案,其目的是為了找出所有可達(dá)對(duì)象。三色標(biāo)記算法會(huì)產(chǎn)生多標(biāo)和漏標(biāo)問題,其中漏標(biāo)問題最嚴(yán)重。漏標(biāo)問題會(huì)導(dǎo)致本該存活的對(duì)象被回收,從而導(dǎo)致嚴(yán)重的程序問題。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2023-01-08 13:46:49

2021-08-16 10:35:52

JVM標(biāo)記法屏障

2021-08-06 11:46:46

Go三色標(biāo)記法

2020-07-09 15:45:22

GoGC內(nèi)存

2025-01-06 08:22:41

2022-11-04 08:47:52

底層算法數(shù)據(jù)

2022-08-15 08:01:00

三色標(biāo)記JVM算法

2023-03-15 09:49:00

CMSG1三色標(biāo)

2021-03-24 10:25:24

優(yōu)化VUE性能

2021-05-11 21:56:11

算法清除JVM

2021-11-08 09:18:01

CAS面試場景

2021-12-25 22:31:10

MarkWord面試synchronize

2024-03-07 17:21:12

HotSpotJVMHot Code

2021-12-02 08:19:06

MVCC面試數(shù)據(jù)庫

2021-12-16 18:38:13

面試Synchronize

2010-08-23 15:06:52

發(fā)問

2021-01-06 05:36:25

拉鏈表數(shù)倉數(shù)據(jù)

2018-04-23 11:00:44

PythonRedisNoSQL

2022-01-20 10:34:49

JVM垃圾回收算法

2022-01-05 09:55:26

asynawait前端
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 91视频播放 | 国产一区二区精 | 色约约视频| 欧美一级视频 | 性高朝久久久久久久3小时 av一区二区三区四区 | 特黄色毛片 | 久久久久久亚洲国产精品 | 91免费高清视频 | 国产一级一级毛片 | 亚洲高清免费视频 | av日韩一区 | 欧美综合在线观看 | 丁香久久| 国产不卡在线观看 | 综合久久综合久久 | 91精品国产综合久久久久蜜臀 | 国产极品粉嫩美女呻吟在线看人 | 久久91精品国产一区二区三区 | 精品视频一区二区三区在线观看 | 欧美三级网站 | 亚洲成人蜜桃 | 成人午夜激情 | 日本成人在线免费视频 | 久久亚洲综合 | 美女张开腿露出尿口 | 国产一级片在线观看视频 | 欧美综合国产精品久久丁香 | 久久首页 | 欧美视频1| 欧美一级二级三级视频 | 五月天婷婷丁香 | 精品区一区二区 | 成年人免费网站 | 天天操网 | 青青久视频 | 日韩精品 | 91视频进入| 91精品国产一区二区三区蜜臀 | 欧美性久久 | 欧美 日韩 国产 成人 在线 | 欧美成人一级视频 |