? 發問時間: 電腦與網際網路程式設計 · 1 0 年前

mark-and-lazy-sweep approach是什

mark-and-lazy-sweep approach是什麼意思?

跟mark-and-sweep有何分別?

不知道的人請勿以翻譯機的翻譯作為回答.

1 個解答

評分
  • tomy
    Lv 4
    1 0 年前
    最佳解答

    我猜你指的應該是garbage collection(GC)領域的演算法,會問這個問題,想必你應該已經對GC的概念有一定的瞭解。

    Mark-and-sweep其實是垃圾收集器(garbage collector)的一種,最早由 Lisp 的發明人 John McCarthy 於 1960 年提出,其基本步驟是:

    (1) Mark phase: 透過一輪記憶體(Heap)的全面掃描,把所有被走訪到的物件標示(mark)為活的(live),

    (2) Sweep phase: 在mark phase中沒被標示到的物件其實就是garbage,所以再以另外一輪記憶體的全面掃描,便可以把所有garbage物件回收(即sweep)。

    => 在Mark-and-sweep的定義裡,這兩輪掃描(Mark and Sweep)會在一次GC過程中被完成。

    由此便不難發現mark-and-lazy-sweep approach的意義了,lazy有延後處理的意思,也就是說,Sweep的動作會被延遲到該garbage物件再次被配置使用時才進行,簡言之,就是要用物件時才做sweep的動作。所以基本上會比較符合經濟效益。

還有問題?馬上發問,尋求解答。