日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【Java 虚拟机原理】垃圾回收算法 ( 标记-清除算法 | 复制算法 | 标记-整理算法 )

發布時間:2025/6/17 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java 虚拟机原理】垃圾回收算法 ( 标记-清除算法 | 复制算法 | 标记-整理算法 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 總結
  • 一、標記-清除算法
  • 二、復制算法
  • 三、標記-整理算法

總結


常用的垃圾回收算法 :

  • 標記-清除算法 ;
  • 復制算法 ;
  • 標記-整理算法 ;

這些算法沒有好壞優劣之分 , 都有各自的 優勢 和 弊端 , 都有各自的 使用場景 ; 一般的垃圾回收 , 都是幾種垃圾回收算法結合起來一起使用 , 不同的場景下 , 使用不同的垃圾回收算法 ;

分代收集算法 : 該垃圾回收算法不是特定的回收算法 , 而是 合理地使用上述 333 個算法 , 在 不同的內存空間內 , 使用不同的垃圾收集器 ;

這里的分代 指的是 年輕代 , 老年代 ; 年輕代又分為 Eden 和 Survivor 兩個區域 , Survivor 又分為 From 和 To 兩個區域 ;





一、標記-清除算法



內的內存區域如下 , 內存區域分為一個個內存塊 , 某個對象可能占用 222 個內存塊 , 也能占用若干個內存塊 ;

如果 定位 找到了 垃圾對象 , 那么 將該 垃圾對象 進行標記 , 如下圖 , 標記為 橙色 ;

標記好之后 , 在執行 GC 內存回收時 , 會 將 被標記的 內存 回收 ;

標記-清除算法優缺點 :

  • 優點 : 算法 實現簡單;
  • 缺點 : 產生了很多 不連續的內存 , 如果對象比較大 , 要用 555 個內存塊 , 會出現 OOM ;




二、復制算法



內存區域 , 分為兩部分 ;

對象只放在 左側區域 , 右側區域 空著 ;

左側區域 的 垃圾對象 回收后 , 將 存活 的對象 , 拷貝到 右側區域 中 ;


復制算法優缺點 :

  • 優點 : 解決了 內存碎片 問題 ; 效率高 ;
  • 缺點 : 只能使用 一半內存 ;

復制算法 適合使用 內存量較小 , 但是 操作很頻繁的區域 , 如 : 在 年輕代 的 Survivor 中 , 使用的就是 復制算法 垃圾回收機制 ;





三、標記-整理算法



標記-整理算法標記-清除算法 的更完善的版本 , 標記-整理算法 解決了 內存碎片問題 ;

內存回收后 , 將內存中的對象重新 緊密地 排列 , 消除內存碎片 ;

標記-整理算法 優缺點 :

  • 優點 : 消除了內存碎片 ;
  • 缺點 : 性能較低 ; 執行該垃圾回收算法時 , 需要 對內存進行重排 , 此時不能隨意變動內存的數據結構 , 因此 執行該 標記-整理算法 時 , 整個線程需要整體停下來 , 但這樣大大影響程序的執行效率 ;

標記-整理 算法 , 不能用在 內存操作 活躍的場景中 , 如 : 老年代的垃圾回收 , 使用的是 標記-整理 算法 ;

總結

以上是生活随笔為你收集整理的【Java 虚拟机原理】垃圾回收算法 ( 标记-清除算法 | 复制算法 | 标记-整理算法 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。