java学习个人笔记---常见的垃圾回收器及存储结构分析
来源:互联网 发布:影视后期软件 编辑:程序博客网 时间:2024/04/29 14:48
常见的垃圾回收器
(1)串行回收器:
串行回收器使用一个CPU处理,在回收垃圾期间应用程序会产生暂停,具体策略为:Young代采用串行复制算法,Old代采用串行标记压缩算法。
存储结构变化分析如下:
Young代内存包含Eden区和Survivor区,Survicor区分为form区和to区,from区和to区会相互转换,系统将活动可达对象直接复制到初始化为空的Survivor区(即To区),如果有些对象的空间特别大,垃圾回收器会直接将其复制到Old代中。
From区的活动对象到底是复制到To区还是Old代中去,取决于对象的生存时间,生存时间长的复制到Old代,否则,复制到To区
(2)并行回收器:
并行回收器与串行回收器基本相同,采用的算法也基本一致,唯一不同的是并行回收器对Young代的回收处理不同;
对Young代的回收采用了多个CPU处理,多线程处理;
对Old代的回收与串行回收器的处理一致,不管采用多少个CPU,依旧采用单线程处理。
(3)并行压缩回收器:
并行压缩回收器与并行回收器基本相同,采用的算法也基本一致,唯一不同的是并行压缩回收器对Old代的回收处理不同;
对Young代的回收与并行回收器的处理一致;
对Old代回收,并行压缩回收器会对Old代的高密度可达对象进行检测,以检测出的高密度可达对象区域为中心,该中心的左边区域不会压缩和回收,而是将其右边区域进行压缩和回收。
(4)并发标记清除(Mark-Sweep)回收器(CMS回收器):
CMS回收器对Young代的回收处理与并行回收器完全一致,采用复制算法,因此会导致应用程序暂停;
对Old代的回收,串行、标志压缩可以等到Old代内存满了再回收,但CMS回收器要与应用程序并发运行,如果等到Old代内存满了再回收,应用程序就无内存可用,因此CMS回收器默认等Old代68%满了就可以回收了。
注意:CMS回收器Old回收采用的不是标志压缩算法,而是标志清除算法,因此它会产生内存碎片;
适用性:CMS回收器只需两次暂停应用程序,其他都与应用程序并行,适合实时性较高的应用程序;
- java学习个人笔记---常见的垃圾回收器及存储结构分析
- java学习笔记(二)----垃圾回收器
- Java垃圾回收学习笔记
- Java垃圾回收学习笔记
- Java垃圾回收学习笔记
- Java垃圾回收学习笔记
- Java垃圾回收学习笔记
- Java垃圾回收学习笔记
- Java中的垃圾回收机制以及常见的垃圾回收器
- Java 垃圾回收器学习
- jvm 垃圾回收(个人笔记)
- java学习个人笔记---内存管理之垃圾回收基本算法
- Java学习笔记---垃圾回收机制
- Java学习笔记--垃圾回收GC
- Java学习笔记之垃圾回收机制
- Java学习笔记之垃圾回收
- Java学习笔记之垃圾回收
- 王一三学习笔记 | 理解Java垃圾回收
- xib
- 4.有关802.11a/g物理头:SIGNAL部分
- How to handle various of Out Of Memory Issues
- Android 蓝牙打印机Service Intent must be explicit
- leetcode笔记:Bulb Switcher
- java学习个人笔记---常见的垃圾回收器及存储结构分析
- iOS 安全(一)
- 关于swift中出现 use of undeclared type ***错误的一种解决方法
- 【Android】Android Studio快捷键
- requests.get 和 bs4.BeautifulSoup
- windows 2003最完善最完美的权限及安全设置解决方案
- IOS中LineBreakMode有哪些类型
- unity让shader支持UGUI Mask
- MFC 操作注册表