深入理解JAVA笔记 - JAVA 垃圾回收

2016-07-25  本文已影响0人  天外星雨

概述

垃圾回收是JAVA很重要的特性,当内存溢出,内存泄漏时,了解垃圾回收可以有效地排查问题。

什么时候垃圾回收

在JAVA中,分为minor GC和full GC,其实垃圾回收和内存分配关系紧密,简单点说,当内存分配不够时,垃圾回收就会触发,由于内存中可能存在碎片,所以,有可能会出现总体内存是够的,但是存放大对象就不够了,这种情况也属于内存分配不够。

内存分配

垃圾回收的触发时机与内存分配策略密切相关,下面来聊一聊内存分配吧,这些规则不一定完全准确,不同的收集器可能不一样。
大部分的收集器都采用分代收集的策略,将内存区域区分为年轻代、年长代。

回收什么

这一部分的算法基本和csapp中提到的差不多。

在可达性算法中不可达的对象,还是有救的,宣告一个对象的真正死亡,要经历至少两次标记过程,第1次是可达性检测后标记,观察对象是否需要执行finalize()方法,如果对象没有覆盖该方法,或者该方法已经被执行过,就是没必要执行,如果需要执行finalize()方法,那么执行过程中,如果绑定到了引用,就不会被回收。


垃圾收集算法

算法实现很复杂,这里只是几种算法的思想。

上一篇 下一篇

猜你喜欢

热点阅读