posts - 122,  comments - 25,  trackbacks - 0
          垃圾收集的目的在于清除不再使用的對象,釋放那些不再使用的對象所占用的內存。GC兩種常用的方法是引用計數和對象引用遍歷,早期的jvm使用引用計數,現在大多數jvm采用對象引用遍歷。

          1、對象引用計數:
          當應用程序創建引用以及引用超出作用域(范圍)時,jvm必須適當增減引用數。當某對象的引用數為0時,對象便可以進行垃圾收集。

          2、對象引用遍歷:
          (1)、標記(marking)對象:從一組對象開始,沿著整個對象圖上的引用鏈,遞歸確定可到達的對象,GC將標記這些可到達的對象。如果某對象不能從這些根對象的一個(至少一個)到達,則表示它可被收集。

          (2)、清除(sweeping)對象:GC刪除不可到達的對象,刪除時,有些GC只是簡單的掃描堆棧,刪除未標記的對象,并釋放它們的內存以生成新的對象。這種方法的問題在于內存會分成好多小段,而它們不足以用于新的對象,但是組合起來卻很大。因此,許多gc可以重新組織內存中的對象,并進行壓縮(compact),形成可利用的空間。
          posted on 2010-09-25 12:13 josson 閱讀(251) 評論(0)  編輯  收藏 所屬分類: java 開發
          <2010年9月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 砚山县| 井冈山市| 寿宁县| 安龙县| 龙海市| 盘锦市| 滨州市| 余江县| 章丘市| 奉节县| 平利县| 河东区| 平江县| 林芝县| 樟树市| 临邑县| 渭南市| 唐山市| 枣庄市| 雅安市| 平谷区| 千阳县| 林西县| 西畴县| 三原县| 东安县| 同德县| 达州市| 同仁县| 宜黄县| 高唐县| 灵台县| 甘肃省| 镇江市| 宣城市| 息烽县| 章丘市| 恩平市| 灌云县| 方城县| 白城市|