学习大纲
- 分代垃圾回收机制
- this的本质(用于对象的)
- 创建一个对象分为如下四步
- static(静态的)关键字
学习笔记
分代垃圾回收机制
基于的事实:不同的对象的生命周期是不一样的,因此,不同的生命周期额的对象可以采取不同的回收算法,以提高效率。
对象分为:年轻代、年老代、持久代。
JVM将堆内存划分为:Eden、Survivor、和Tenured/Old
1.年轻代
所有新生成的对象首先是放在Eden区。年轻代的目标就是尽可能快速的收集掉那些生命周期短的对象,对应的是Minor Gc,每次Minor Gc会清理掉年轻代的内存,算法采用效率较高的复制算法,频繁的操作,但是会浪费内存空间。当“年轻代”区域存放满对象后,就将对象放到年老代区域
2.年老代
在年轻代中经历了N(默认15)次垃圾回收后仍然存活的对象,就会放到年老代中。因此,可以认为年老代中存放的都是一些生命周期较长的对象。年老代对象越来越多,我们就需要起到Major Gc和Full Gc(全量回收),来一次大扫除,全面清理年轻代区域和年老代区域
3.持久代
用于存放静态文件,如java类,方法等,持久代对垃圾回收没有显著影响
垃圾回收过程:
1.新创建的对象,绝大多数都会存储在Eden中,
2.当Eden满了(达到一定比例)不能创建新对象,则出发垃