Java GC机制
2019-10-08 本文已影响0人
pj0579
GC
是什么?
垃圾收集 Garbage Collection
,很多程序员都遇到过内存溢出的情况,程序运行时,内存空间是有限的,那么如何及时的把不再使用的对象清除将内存释放出来,这就是GC要做的事。
那有几个问题:
1.什么时候GC?
当程序调用System.gc时可以触发。
2.什么对象会被GC?
需要进行回收的对象就是已经没有存活的对象,判断一个对象是否存活常用的有两种办法:引用计数
和可达分析
。
引用计数
:会导致循环引用。
可达分析
:
虚拟机栈中引用的对象。
方法区中类静态属性实体引用的对象。
方法区中常量引用的对象。
本地方法栈中JNI引用的对象。
-
GC过程
主流JVM采用分代收集GC
算法
将堆(主要的GC集中区)分为新生代(Young)
和老年代(Tenure)
新生代:对象生命周期短,采用复制算法。
老年代:标记整理GC算法或标记清除GC算法