堆内存回收

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

日志显示

-verbose

453c53f1d4278da2d5e95d004416c308a840ddd3

二.可达性分析

GC Root引用

66d1a5fb6e1daac8e6757de8449708c6d3138968

9e392382aae8030642759b921e3b2e8e59120984

GC Root引用

强引用不可回收

62f0a12f8a9d8f2e3c1e30d50beb87f069a6c35e

Synchronized(sth.class)

软引用:

内存紧张时回收

GC Root会强引用

SoftReference类,

SoftReference类

来软引用我们的目标

1589036419a56960847bb57d8dff9704cb9e3857

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

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

32572b20ae4f3211e16863d54c4148d91a4eadbe

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

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

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

a3b4d5a3e00fab8976824cd3b3b9fdf69a0e18a4

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

软引用缓存自动回收机制

c315e91773a776522ff34e06523ef1e7cdbdd5c2

弱引用 fe247e75b4b7bd8b13d4b35e2363df3e1449b1e1
虚引用和终结器 d208186ed982038a17c3bf6d95683b07f6f84b2b

引用对比:

1
2
3
<p>软引用:我能活尽量活;</p>
<p>弱引用:下次 GC 我就走;</p>
<p>虚引用:我走了记得收尸;</p>

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

f175482f06e7bf8241c1294e0133d25c5192d756