- Offer來了:Java面試核心知識點精講(原理篇)
- 王磊
- 468字
- 2020-04-03 12:50:08
1.7 分代收集算法和分區收集算法
1.7.1 分代收集算法
JVM根據對象存活周期的不同將內存劃分為新生代、老年代和永久代,并根據各年代的特點分別采用不同的GC算法。
1.新生代與復制算法
新生代主要存儲短生命周期的對象,因此在垃圾回收的標記階段會標記大量已死亡的對象及少量存活的對象,因此只需選用復制算法將少量存活的對象復制到內存的另一端并清理原區域的內存即可。
2.老年代與標記整理算法
老年代主要存放長生命周期的對象和大對象,可回收的對象一般較少,因此JVM采用標記整理算法進行垃圾回收,直接釋放死亡狀態的對象所占用的內存空間即可。
1.7.2 分區收集算法
分區算法將整個堆空間劃分為連續的大小不同的小區域,對每個小區域都單獨進行內存使用和垃圾回收,這樣做的好處是可以根據每個小區域內存的大小靈活使用和釋放內存。
分區收集算法可以根據系統可接受的停頓時間,每次都快速回收若干個小區域的內存,以縮短垃圾回收時系統停頓的時間,最后以多次并行累加的方式逐步完成整個內存區域的垃圾回收。如果垃圾回收機制一次回收整個堆內存,則需要更長的系統停頓時間,長時間的系統停頓將影響系統運行的穩定性。
推薦閱讀
- 大學計算機基礎(第二版)
- 軟件項目管理(第2版)
- Microsoft Application Virtualization Cookbook
- Mastering Ember.js
- 深入淺出Java虛擬機:JVM原理與實戰
- 程序員考試案例梳理、真題透解與強化訓練
- Python時間序列預測
- 單片機C語言程序設計實訓100例
- 低代碼平臺開發實踐:基于React
- Instant Debian:Build a Web Server
- Python趣味編程與精彩實例
- PHP+MySQL動態網站開發從入門到精通(視頻教學版)
- Ext JS 4 Plugin and Extension Development
- Getting Started with the Lazarus IDE
- Web程序設計與架構