垃圾回收算法之分代回收算法
来源:互联网 发布:mac搜狗五笔无法使用 编辑:程序博客网 时间:2024/06/02 06:17
http://blog.csdn.net/sinat_36246371/article/details/52998505
当前商业虚拟机基本上都是采用分代垃圾回收算法来回收垃圾,思想也很简单,就是根据对象的生命周期将内存划分,然后进行分区管理。
在Java虚拟机分代垃圾回收机制中,应用程序可用的堆空间可以分为年轻代与老年代,然后呢,年亲代有被分为Eden区,From区与To区。
当系统创建一个对象的时候,总是在Eden区操作,当这个区满了,那么就会触发一次YoungGC,也就是年轻代的垃圾回收。
一般来说这时候不是所有的对象都没用了,所以就会把还能用的对象复制到From区。
这样整个Eden区就被清理干净了,可以继续创建新的对象,当Eden区再次被用完,就再触发一次YoungGC,然后呢,注意,这个时候跟刚才稍稍有点区别。这次触发YoungGC后,会将Eden区与From区还在被使用的对象复制到To区,
再下一次YoungGC的时候,则是将Eden区与To区中的还在被使用的对象复制到From区。
经过若干次YoungGC后,有些对象在From与To之间来回游荡,这时候From区与To区亮出了底线(阈值),这些家伙要是到现在还没挂掉,对不起,一起滚到(复制)老年代吧。
老年代经过这么几次折腾,也就扛不住了(空间被用完),好,那就来次集体大扫除(Full GC),也就是全量回收,一起滚蛋吧。
全量回收呢,就好比我们刚才比作的大扫除,毕竟动做比较大,成本高,不能跟平时的小型值日(Young GC)相比,所以如果Full GC使用太频繁的话,无疑会对系统性能产生很大的影响。
所以要合理设置年轻代与老年代的大小,尽量减少Full GC的操作
参考文献
[1] 《深入理解Java虚拟机——JVM高级特征与最佳实践》,周志明,机械工业出版社。
[2] 《大型网站技术架构——核心原理与案例分析》,李智慧,电子工业出版社。
- 垃圾回收算法之分代回收算法
- 垃圾回收算法之分代回收算法
- JVM垃圾分代回收算法详解
- java垃圾回收算法之-分代收集
- Java垃圾回收算法以及分代回收机制
- 垃圾回收算法详解(二)分代垃圾回收算法
- java分代垃圾回收算法(GC)
- 17.JVM垃圾回收分代收集算法
- 分代垃圾回收
- 分代垃圾回收
- 分代垃圾回收
- JVM垃圾回收算法之新生代和老年代
- JVM垃圾回收算法之新生代和老年代
- JVM分代垃圾回收
- .NET 分代垃圾回收
- JVM分代垃圾回收
- java分代回收垃圾
- Java虚拟机垃圾回收(二) 垃圾回收算法:标记-清除算法 复制算法 标记-整理算法 分代收集算法 火车算法
- 通过Oracle Golden Gate 进行Oracle到SQL Server的同步
- eclipse or intellij idea 清除svn标示
- 字节序相关问题
- 常用组件
- Tail Recursion 尾递归
- 垃圾回收算法之分代回收算法
- 行列式(determinant)的物理意义及性质
- iOS应用内支付(内购)
- "XMLHttpRequest".equals(request.getHeader("X-Requested-With"));
- STM8S单片机串口调试
- golang--自动下载邮件的附件
- python中for用来遍历range函数
- 自动获取sim号码填入edittext
- weex图片显示