From 28df184269d261165de861d7dead6cda9aca5e53 Mon Sep 17 00:00:00 2001 From: Dwade3 <36162683+PualrDwade@users.noreply.github.com> Date: Thu, 21 Mar 2019 13:55:45 +0800 Subject: [PATCH] =?UTF-8?q?Update=20Java=20=E8=99=9A=E6=8B=9F=E6=9C=BA.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 增加了循环引用的简单分析 --- docs/notes/Java 虚拟机.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/notes/Java 虚拟机.md b/docs/notes/Java 虚拟机.md index c7148c9a..6df7df0b 100644 --- a/docs/notes/Java 虚拟机.md +++ b/docs/notes/Java 虚拟机.md @@ -122,10 +122,15 @@ public class Test { Test b = new Test(); a.instance = b; b.instance = a; + a = null; + b = null; + doSomething(); } } ``` +在上述代码中,a与b引用的对象实例互相持有了对象的引用,因此当我们把对a对象与b对象的引用去除之后,由于两个对象还存在互相之间的引用,导致两个Test对象无法被回收。 + ### 2. 可达性分析算法 以 GC Roots 为起始点进行搜索,可达的对象都是存活的,不可达的对象可被回收。