国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java垃圾回收之標記清除算法詳解

Java垃圾回收之標記清除算法詳解

2021-06-08 15:09Sam哥哥 Java教程

今天小編就為大家分享一篇關于Java垃圾回收之標記清除算法詳解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

java垃圾回收算法之-引用計數器,這個算法其中一個優點便是,實時性,只要對象的引用計數器的值為0,則立刻回收。接下來介紹的標記清除算法,當對象的引用計數器的值為0時,不會立刻被回收的。

概念介紹

root對象

在標記清除算法中,會把如下對象稱之為root對象

  1. 被棧中的變量(棧中存的是對象的引用)所引用的對象
  2. 被static變量引用的對象

可訪問的對象

如果棧中有一個變量a引用了一個對象,那么該對象是可訪問的,如果該對象中的某一個字段引用了另一個對象b,那么b也是可訪問的。可訪問的對象也稱之為live對象

標記清除算法介紹

該算法有兩個階段。

1. 標記階段:找到所有可訪問的對象,做個標記
2. 清除階段:遍歷堆,把未被標記的對象回收

備注:

  • 該算法一般應用于老年代,因為老年代的對象生命周期比較長。

標記階段算法

偽代碼類似如下:

?
1
2
3
for each root variable r
  mark (r);
sweep ();

為了能夠區分對象是live的,可以為每個對象添加一個marked字段,該字段在對象創建的時候,默認值是false

假設有一個對象p,p對象還間接的引用了其他對象,那么可以使用一個遞歸算法去進行標記,例如:

?
1
2
3
4
5
void mark(object p)
  if (!p.marked)
    p.marked = true;
    for each object q referenced by p
      mark (q);

這個mark方法只有當所有對象已經被mark后才會退出。

清除階段算法

在這個階段,需要去遍歷堆中所有對象,并找出未被mark的對象,進行回收。與此同時,那些被mark過的對象的marked字段的值會被重新設置為false,以便下次的垃圾回收。

偽代碼如下:

?
1
2
3
4
5
6
void sweep ()
  for each object p in the heap
    if (p.marked)
      p.marked = false
    else
      heap.release (p);

下面用一張圖來表示標記清除算法的整個過程。

Java垃圾回收之標記清除算法詳解

標記清除算法的優點和缺點

1. 優點
- 是可以解決循環引用的問題
- 必要時才回收(內存不足時)

2. 缺點:
- 回收時,應用需要掛起,也就是stop the world。
- 標記和清除的效率不高,尤其是要掃描的對象比較多的時候
- 會造成內存碎片(會導致明明有內存空間,但是由于不連續,申請稍微大一些的對象無法做到),如下圖:

Java垃圾回收之標記清除算法詳解

解決循環引用

出現循環引用的代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class testa{
 public testb b;
}
class testb{
 public testa a;
}
public class main{
  public static void main(string[] args){
    a a = new a();
    b b = new b();
    a.b=b;
    b.a=a;
    a = null;
    b = null;
  }
}

對應的圖如下:

Java垃圾回收之標記清除算法詳解

這個時候,當a = null; b = null;的時候,圖像變成如下:

Java垃圾回收之標記清除算法詳解

那么使用標記清除算法是可以回收a和b的,原因是標記清除算法是從棧中根對象開始的,改算法走完后,a對象和b對象是沒有被標記的,會被直接回收。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

原文鏈接:https://blog.csdn.net/linsongbin1/article/details/51577310

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美精品一区二区三区中文字幕 | 北条麻妃99精品青青久久 | 欧美日韩国产精品一区二区 | 婷婷久久五月天 | 三级黄色视频毛片 | 久久久久久国产精品mv | 亚洲精品九九 | 日本黄色免费网站 | 亚洲视频在线看 | 亚洲成人福利 | 欧美日韩国产一区二区三区 | 91麻豆精品国产91久久久更新资源速度超快 | 激情综合网激情 | 国产成人精品电影 | 欧日韩在线视频 | 欧美精品一二三 | 97久久精品人人澡人人爽 | 成人久久久精品国产乱码一区二区 | 久久er99热精品一区二区 | 国产一区二区免费 | 青青久久av北条麻妃黑人 | 色欧美片视频在线观看 | 色狠狠综合天天综合综合 | 大象一区 | 久久久网站 | 亚洲精品一区二区 | 国产黄色大片 | 欧美一区二区精品 | 欧美在线视频a | 日韩欧美三级在线观看 | 日韩在线免费观看视频 | 成人超碰在线 | 久久99国产精品久久99果冻传媒 | 色吧网站 | 精品视频一区二区 | 中文字幕日韩欧美一区二区三区 | 狠狠久久综合 | 午夜影院免费看 | 欧美精品一二三区 | 国产一区二区综合 | 国产第一夜 |