麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

垃圾自動收集系統指導 (2)

2019-11-18 13:26:09
字體:
來源:轉載
供稿:網友

  停止和復制
  標記和清除法的兄弟就是停止和復制收集法了。停止和復制法解決了標記和清除法的碎片問題,但是對內存提出了更高的要求(或者是對一個較小的對象池進行更加頻繁的收集)。微軟的java虛擬機使用的就是這個算法,而在當時這是最快的虛擬機之一。
  停止和復制法的原理是為對象創建兩個內存池,但是每次只使用其中的一個。在你分配對象的時候,它就簡單地在活動的內存池中為你指定下一個可用空間。假如內存池填滿了——或者假如系統決定該收集了——它就進行同標記和清除法相同動作,跟蹤程序里系統對象的所有指針。但是不僅僅標記這些對象,它把它們從當前的內存池里復制到另一個非活動的內存池里。
  
  這個復制動作將活動著的對象一個一個安置到新的內存池里。一完成這個過程,它就將原來這個原本非活動的內存池切換成活動的。由于它只復制活動的對象,所以垃圾對象被留了下來。要收集的總是會比要扔掉的少。復制這一過程事實上整理了新的內存池,因為對象是一個接一個放置的。
  停止和復制法仍然必須要停止正在運行的程序,以收集對象并把它們移到內存池里。在這個算法運行的時候,它在清理的應用程序會停下來,導致程序的波動。
  世代
  活動垃圾收集法的輪廓揭示了一些基礎性錯誤,這些錯誤在垃圾收集算法如何工作同垃圾需要如何被收集比較時產生。正在運行的應用程序的大多數對象只會存活很短的時間,只有極少數會存活在應用程序運行的全過程中。前面勾畫的算法平等地處理所有對象。不幸的是,每個活動的對象都需要被處理(例如移動、標記),這會對性能造成負面影響。長時間存活的對象是持續的——所以不需要——在每次收集時被移來移去。
  
  當前,像最新的Java Hotspot虛擬機里使用的垃圾收集程序分別為新老對象創建各自的內存池,這樣的新老對象叫做“代”。假如一個對象經歷了特定的收集次數(有的時候就一次,但是次數依靠于收集程序),它就被從新內存池移到老內存池里。老內存池,從本質上講,收集的次數會更少,這樣考慮的原因是:既然這些對象已經存活了一段時間了,它們會存活得更長。
  這樣就大大降低了垃圾收集程序的負載。一輪收集過程中就結束的短時間存活對象對收集程序的影響較小,因為收集程序主要對存活的對象進行處理。對老一代對象的收集要少得多,這就減少了對老對象不必要的移動。
  不同的代甚至可以有不同的算法來處理它們。例如,停止和復制法適用于新對象池,因為它認為新對象結束得更快(對于非垃圾對象而言,停止和復制法的性能耗費是線性的)。對老一代的對象能夠采取額外的步驟以實現更加精確的算法,因為對性能的要求不是問題。
  好好利用垃圾收集
  盡管有各種好處,垃圾收集法仍然會從正在運行的應用程序手中搶奪CPU。要最小化這種影響的最好辦法其實很簡單:少創建對象。更少的對象需要更少收集操作,理論上這會提高性能。
  垃圾收集是邁向擺脫每日編程中一些難纏細節的堅實步驟。這個問題是過去幾年討論的熱點。現在所使用的技術已經很老了(從計算機領域來看),所以是該好好利用垃圾收集程序的時候了。

上一篇:連接池用法

下一篇:Jar clone的版本沖突

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久色porn| 法国极品成人h版 | 在线播放黄色网址 | 免费国产a| 久草久视频 | 99riav国产在线观看 | 欧美成人精品不卡视频在线观看 | 亚洲人成网站免费播放 | 中文字幕在线日韩 | 日韩在线播放中文字幕 | 男女视频免费看 | 亚洲一区二区中文字幕在线观看 | 一区二区三区欧美在线 | 国产黄色一级大片 | 成人免费毛片片v | 亚洲免费在线视频 | 午夜精品小视频 | 国产精品久久久久久久不卡 | 羞羞视频免费网站男男 | 中国毛片在线观看 | 久久久久久久久久久亚洲 | 特级黄色一级毛片 | 成人在线视频免费观看 | 国产69精品福利视频 | 中文字幕在线免费播放 | 国产精品成人免费一区久久羞羞 | 一级做a爰性色毛片免费1 | 国产亚洲精品久久久久婷婷瑜伽 | 91看片淫黄大片欧美看国产片 | 在线99热 | 一级在线视频 | 成人福利视频在线 | 国产精品国产成人国产三级 | 天天色图片 | tube69xxxxxhd| 欧美激情视频一区二区免费 | 欧美日本在线视频 | 国产一级毛片网站 | 欧美成人免费在线视频 | 国产精品99久久久久久久vr | 250pp久久新 黄色网址免费在线播放 |