File tree Expand file tree Collapse file tree 1 file changed +7
-6
lines changed Expand file tree Collapse file tree 1 file changed +7
-6
lines changed Original file line number Diff line number Diff line change 17
17
18
18
总结就是,方法运行时,方法中引用的对象;类的静态变量引用的对象;类中常量引用的对象;Native方法中引用的对象
19
19
20
- ![ ] ( http://upload-images.jianshu.io/upload_images/3985563-5865f6922a28a9fd.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240 )
20
+ ![ ] ( http://upload-images.jianshu.io/upload_images/3985563-5865f6922a28a9fd.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240 )
21
+
21
22
** 在可达性分析算法中,要真正宣告一个对象死亡,至少要经历两次标记过程:**
22
23
23
24
1.如果对象在进行可达性分析后发现没有与GC Roots相连接的引用链,那它将会被第一次标记并且进行一次筛选,筛选的条件是此对象是否有必要执行finalize\(\) 方法。当对象没有 覆盖finalize\(\) 方法,或者finalize\(\) 方法已经被虚拟机调用过,虚拟机将这两种情况都视为“没有必要执行”。
26
27
27
28
## 三、判断对象是否存活与“引用”有关
28
29
29
- 在JDK1.2之后,Java对引用的概念进行了扩充,将引用分为强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、虚引用(Phantom Reference)四种,这四种引用强度依次逐渐减弱 。
30
+ 在JDK1.2之后,Java对引用的概念进行了扩充,将引用分为强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、虚引用(Phantom Reference)四种,这四种 ** 引用强度依次逐渐减弱 ** 。
30
31
31
- ** 强引用:** 就是指在程序代码之中普遍存在的,类似“Object obj = new Object\(\) ”这类的引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象。
32
+ ** 强引用:** 就是指在程序代码之中普遍存在的,类似“Object obj = new Object\(\) ”这类的引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象。
32
33
33
- ** 软引用:** 用来描述一些还有用但并非必须的对象。在系统将要发生内存溢出异常之前,将会把这些对象列进回收范围之中进行第二次回收。
34
+ ** 软引用:** 用来描述一些还有用但并非必须的对象。在系统将要发生内存溢出异常之前,将会把这些对象列进回收范围之中进行第二次回收。
34
35
35
- ** 弱引用:** 用户描述非必须对象的。被弱引用关联的对象只能生存到下一次垃圾收集发生之前。当垃圾收集器工作时,无论当前内存是否足够,都会回收掉只被弱引用关联的对象。
36
+ ** 弱引用:** 用户描述非必须对象的。被弱引用关联的对象只能生存到下一次垃圾收集发生之前。当垃圾收集器工作时,无论当前内存是否足够,都会回收掉只被弱引用关联的对象。
36
37
37
- ** 虚引用:** 一个对象是否有虚引用存在,完全不会对其生存时间构成影响,也无法通过虚引用来取得一个对象实例。为一个对象设置虚引用的唯一目的就是能在这个对象被收集器回收时刻得到一个系统通知。
38
+ ** 虚引用:** 一个对象是否有虚引用存在,完全不会对其生存时间构成影响,也无法通过虚引用来取得一个对象实例。为一个对象设置虚引用的唯一目的就是能在这个对象被收集器回收时刻得到一个系统通知。
38
39
You can’t perform that action at this time.
0 commit comments