《深入理解java虚拟机》读书笔记四 【垃圾收集算法和垃圾收集器】
来源:互联网 发布:整型数据占几个字节 编辑:程序博客网 时间:2024/06/07 11:54
垃圾收集算法
1.标记-清除算法Mark-Sweep
缺点:效率低;有内存碎片。
2.复制算法Copying
将可用内存按容量划分为大小相等的两块,每次只使用其中的一块,当这一块的内存用完了,就将还存活着的对象复制到另一块上面,然后再把已经使用的内存空间一起清理掉。
缺点:内存缩小为原来的一半,对象存活率高时复制操作多
优点:没有内存碎片,实现简单,运行高效
3.标记-整理算法Mark-Compact
让所有存活对象移动到一端,然后直接清理掉端边界以外的内存。
4.分代收集算法Generational Collection
根据对象存活周期不同,将内存划分为新生代和老年代,新生代采用复制算法,老年代采用标记-清理或标记-整理算法。
新生代包含:Eden区和两个Suivivor区(from和to),一般-XX:SuivivorRatio=8
对象优先分配在Eden区和From区,大对象根据 -XX:PretenureSizeThreshold=3145728设置分配到老年代。
一次MinorGC做的事情:
1.回收Eden区和From区对象
2.将Eden区和From区存活对象复制到To区
2.1成功,年龄+1
2.1.1年龄超过阈值MaxTenuringThresold,复制到老年代
2.2失败,分配担保到老年代
3.清空Eden区和From区
4.From区变To区,To区变From区,变化角色后的From区有上次GC留下的对象,To区为空
垃圾收集器
1.Serial-serial old
单线程,stop the world,简单高效
2.ParNew-Serial old
新生代多线程,老年代单线程
3.Parallel Scavenge-Parallel old
多线程,吞吐量优先,GC停顿时间缩短是以牺牲吞吐量和新生代空间换取的。
4.Serial-CMS
新生代serial,老年代CMS
Concurrent Mark Sweep,并发标记清除,多应用在BS服务端,以获取最短回收停顿时间为目标。四个过程:
初始标记:stop the world,单线程
并发标记:
重新标记:stop the world,并行
并发清除:
缺点:
1.对CPU资源敏感
2.无法处理浮动垃圾
3.大量空间碎片
5.Parnew-CMS
新生代Parnew,老年代CMS
6.G1
基于标记-整理算法,实时垃圾收集器,优先回收垃圾最多的区域。可以实现基本不牺牲吞吐量的前提下完成低停顿的内存回收。
- 《深入理解java虚拟机》读书笔记四 【垃圾收集算法和垃圾收集器】
- 深入理解JAVA虚拟机---垃圾收集算法和垃圾收集器
- 深入理解Java虚拟机(四)-垃圾收集算法
- 读书笔记——《深入理解Java虚拟机》系列之四种垃圾收集算法
- 《深入理解java虚拟机》读书笔记——垃圾收集器
- 深入理解java虚拟机(四):对象存活判定算法和垃圾收集算法
- 深入理解java虚拟机(四):对象存活判定算法和垃圾收集算法
- 《深入理解JAVA虚拟机》学习笔记(三)JAVA垃圾收集算法和常见垃圾收集器
- 深入理解Java虚拟机 二、JVM垃圾收集算法与垃圾收集器
- 7.《深入理解Java虚拟机》垃圾收集器-垃圾收集算法的具体实现
- 深入理解java虚拟机-读书笔记2-垃圾收集器和内存分配策略
- 深入理解Android虚拟机四------垃圾收集
- 【读书笔记】深入理解Java虚拟机——垃圾收集
- 深入理解java虚拟机【Java虚拟机垃圾收集器】
- 《深入理解java虚拟机》Java虚拟机垃圾收集器
- 深入理解Java虚拟机笔记---垃圾收集算法
- [深入理解Java虚拟机]第三章 垃圾收集算法
- 深入理解Java虚拟机笔记---垃圾收集算法
- ICEM划分网格实例——六角形螺栓
- Hibernate配置
- ckeditor 学习笔记【1】初始化
- 爬虫的定向爬取
- JQuery学习笔记(一)
- 《深入理解java虚拟机》读书笔记四 【垃圾收集算法和垃圾收集器】
- struts2工作原理
- android N 导入批量联系人 dialer崩溃
- JAVA 高并发
- 解决double类型相减有误差的问题
- 简单的异步请求删除商品图片
- mysql对数据执行加密处理
- 欢迎使用CSDN-markdown编辑器
- MATLAB中矩阵写入txt文件的方法