摘要: 1. 标记 - 清除 在标记阶段,程序会检查每个对象是否为活动对象,如果是活动对象,则程序会在对象头部打上标记。 Object obj = new Object(); SoftReference<Object> sf = new SoftReference<Object>(obj); obj = n 阅读全文
posted @ 2020-07-21 15:21 miracleyy 阅读(31) 评论(0) 推荐(0)
摘要: 无论是通过引用计数算法判断对象的引用数量,还是通过可达性分析算法判断对象是否可达,判定对象 是否可被回收都与引用有关。 Java中提供这四种引用类型主要有两个目的:第一是可以让程序员通过代码的方式决定某些对象的生命 周期;第二是有利于JVM进行垃圾回收。 1. 强引用 被强引用关联的对象不会被回收。 阅读全文
posted @ 2020-07-21 15:17 miracleyy 阅读(188) 评论(0) 推荐(0)
摘要: 概述 Java虚拟机会自动管理内存,不容易出现内存泄漏和内存溢出问题。Java虚拟机会在执行过程中将管理的内存分为若干个不同的数据区域。 运行时数据区域 在jdk1.8之前的版本与1.8版本略有不同,在jdk1.8之前: jdk1.8: 以上图片来源:https://github.com/LikFr 阅读全文
posted @ 2020-07-21 14:58 miracleyy 阅读(253) 评论(0) 推荐(0)
摘要: 垃圾收集主要是针对堆和方法区进行。程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有 的,只存在于线程的生命周期内,线程结束之后就会消失,因此不需要对这三个区域进行垃圾回收。 判断一个对象是否可被回收 1. 引用计数算法 为对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数 阅读全文
posted @ 2020-07-21 14:53 miracleyy 阅读(79) 评论(0) 推荐(0)