堆内存回收

一.引用计数法 有用到引用则+1, 取消引用则-1

日志显示

-verbose

image1

二.可达性分析

GC Root引用

image2

image3

GC Root引用

强引用不可回收

image4

Synchronized(sth.class)

软引用:

内存紧张时回收

GC Root会强引用

SoftReference类,

SoftReference类

来软引用我们的目标

image5

==============

软引用队列:用来接收被垃圾回收器回收的引用对象。

当创建软引用的时候,会创建一个引用队列。

当内存不足的时候,会将软引用对应的对象数据删掉,

然后再把软引用放到队列里面。

==============

软引用缓存自动回收机制

弱引用 image9
虚引用和终结器 image10

引用对比:

软引用:我能活尽量活;

弱引用:下次 GC 我就走;

虚引用:我走了记得收尸;

终结器引用:我死前乱叫一声。

image11