垃圾收集管理器 GC
是jvm中的一个后台线程,此线程完成的功能是收集堆空间中的没有引用的对象内存空间并释放空间
GC的主要特点
释放无用的对象空间,程序员是无法掌控GC的调用的
GC针对的是堆空间
在堆空间中,创建的对象是创建在新生代中
新生代区:young generation
分类:
- 伊甸园区:Eden 所有的新创建的对象都放在此
- 幸存区:survivor 在eden区中经过一个扫描,此对象还存在,就把对象从eden区移动到此 一个eden区对应两个survivor区 8:1:1,而最后一个survivor区是系统保留区(空闲的)
老生代区:old generation
在幸存区中经过多次扫描对象,还存在在幸存区中,就把幸存区中的对象移到老生代中
老生代扫描对象是否可用的频率远低于幸存区的扫描频率
如果老生代中长时间存在的对象,建议程序员把对象放在方法区中,以减少扫描的频率,程序员在写代码的时候,要考虑对象的作用域空间
minor gc 初代回收,收集的是新生代的eden区的空间
full gc 完全回收,收集的是老生代的内存空间