码迷,mamicode.com
首页 > 编程语言 > 详细

java基础学习之垃圾回收机制

时间:2019-04-28 12:43:29      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:没有   包括   java基础学习   识别   enc   chain   方法   红色   简单   

 

回收过程:

1.发现无用的对象

2.回收无用对象占用的内存的空间。

垃圾回收相关算法:

1.引用计数法

堆中每个对象都有一个引用计数。被引用一次,计数加一。被引用变量值变为null,则计数减一。

到计数变为0,则表示为无用对象。

优点:算法简单  

缺点:无法识别循环引用(相互引用对方,导致计数器不为0,但实际上已经不用它们了)

2.引用可达法(根搜索算法)

通过一系列的GC Roots的对象作为起始点,从这些根节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的。

技术图片

说明:
(2.1)、红色代表不可达对象(可回收对象)
(2.2)、千万注意!!!!!上图并不是说方法区全可达,虚拟机栈部分可达,本地方法栈全部不可达,而只是为了说明这三个部分可以作为GC Roots!
3、可以作为GC Roots的对象包括以下几点
(3.1)、虚拟机栈(栈帧中的本地变量表)中引用的对象。
(3.2)、方法区中的类静态属性引用的对象或者常量引用的对象。
(3.3)、本地方法栈中JNI(就是native方法)引用的对象。


通用的分代垃圾回收机制

对象分为三种状态:年轻代、年老代、持久代

技术图片

技术图片

开发中容易造成内存泄漏的操作:

技术图片

 

java基础学习之垃圾回收机制

标签:没有   包括   java基础学习   识别   enc   chain   方法   红色   简单   

原文地址:https://www.cnblogs.com/ustc-anmin/p/10783222.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!