JAVA什么时候执行GC

GC是在什么时候:
eden满了minor gc,升到老年代的对象大于老年代剩余空间full gc,或者小于时被HandlePromotionFailure参数强制full gc;GC不受程序员控制。

对什么东西:
从root搜索不到,而且经过第一次标记、清理后,仍然没有复活的对象。(在finalize方法中能够使对象重新复活)
只有root节点搜索不到某个对象的时候,才会调用对象的finalize方法。

做什么:
删除不使用的对象,回收内存空间;运行默认的finalize,当然程序员想立刻调用就用dipose调用以释放资源如文件句柄,JVM用from survivor、to survivor对它进行标记清理,对象序列化后也可以使它复活。

GC的类型:
新生代 GC(Minor GC):指发生在新生代的垃圾收集动作,因为 Java 对象大多都具备朝生夕灭的特性,所以 Minor GC 非常频繁,一般回收速度也比较快。

老年代 GC(Major GC / Full GC):指发生在老年代的 GC,出现了 Major GC,经常会伴随至少一次的 Minor GC(但非绝对的,在 ParallelScavenge 收集器的收集策略里就有直接进行 Major GC 的策略选择过程) 。MajorGC 的速度一般会比 Minor GC 慢 10倍以上。

http://blog.sina.com.cn/s/blog_68158ebf0100wp83.html

你可能感兴趣的:(JAVA什么时候执行GC)