为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

垃圾回收机制

2018-02-13 2页 doc 12KB 9阅读

用户头像

is_009226

暂无简介

举报
垃圾回收机制垃圾回收机制 Java垃圾回收常见的六种算法如下: 1.引用记数,reference counting, 这是一种不使用根集的垃圾回收算法。基本思想是:当对象创建并赋值时该对象的引用计数器置1~每当对象给任意变量赋值时~引用记数,1,一旦退出作用域则引用记数,1。一旦引用记数变为0~则该对象可以被垃圾回收。引用记数有其相应的优势:对程序的执行来说~每次操作只需要花费很小块的时间。这对于不能被过长中断的实时系统来说有着天然的优势。 但也有其不足:不能够检测到环,两个对象的互相引用,,同时在每次增加或者减少引用记数的时候比较...
垃圾回收机制
垃圾回收机制 Java垃圾回收常见的六种算法如下: 1.引用记数,reference counting, 这是一种不使用根集的垃圾回收算法。基本思想是:当对象创建并赋值时该对象的引用计数器置1~每当对象给任意变量赋值时~引用记数,1,一旦退出作用域则引用记数,1。一旦引用记数变为0~则该对象可以被垃圾回收。引用记数有其相应的优势:对程序的执行来说~每次操作只需要花费很小块的时间。这对于不能被过长中断的实时系统来说有着天然的优势。 但也有其不足:不能够检测到环,两个对象的互相引用,,同时在每次增加或者减少引用记数的时候比较费时间。在现代的垃圾回收算法中~引用记数已经不再使用。 2.追踪算法,tracing, 基于根集的最基本算法。基本思想是:每次从根集出发寻找所有的引用,称为活对象,~每找到一个~则对其做出标记~当追踪完成之后~所有的未标记对象便是需要回收的垃圾。追踪算法基于标记并清除.这个垃圾回收步骤分为两个阶段:在标记阶段~垃圾回收器遍历整棵引用树并标记每一个遇到的对象。在清除阶段~未标记的对象被释放~并使其在内存中可用。 3.紧凑算法,compacting, 在追踪算法中~每次被释放的对象会让堆空间出现碎片~这会使得内存的页面管理变得非常不稳定~可能在还有足够内存空间时就发生溢出~这对于本来就紧张的JVM内存资源来说是非常不利的。由此出现了紧凑算法。基本思想是:在追踪算法进行垃圾回收的基础上~每次标记清扫时顺便将对象全部整理到内存的一端~这样每次分配内存时便都能从顺序的空间开始。每次更新时~对象句柄都指向实际的对象~所有参考他的引用都将通过参考对象句柄来得到对象的实际位置。 4.拷贝算法,copying, 这是另一种针对内存碎片的算法。基本思想是:将内存划分为两块~一块是当前正在使用,另一块是当前未用。每次分配时使用当前正在使用内存~当无可用内存时~对该区域内存进行标记~并将标记的对象全部拷贝到当前未用内存区~这是反转两区域~即当前可用区域变为当前未用~而当前未用变为当前可用~继续执行该算法。 拷贝算法需要停止所有的程序活动~然后开始冗长而繁忙的copy工作。这点是其不利的地方。 5.分代算法,geneational, 针对拷贝算法的不足~有的最新JVM采用了分代算法。其思想依据是:1.被大多数程序创建的大多数对象有着非常短的生存期。2.被大多数程序创建的部分对象有着非常长的生存期。简单拷贝算法的主要不足是它们花费了更多的时间去拷贝 了一些长期生存的对象。分代算法的基本思想是:将内存区域分两块,或更多,~其中一块代年轻代~另一块代表老的一代。针对不同的特点~对年轻一代的垃圾收集更为频繁~对老代的收集则较少~每次经过年轻一代的垃圾回收总会有未被收集的活对象~这些活对象经过收集之后会增加成熟度~当成熟度到达一定程度~则将其放进老代内存块中。分代算法很好的实现了垃圾回收的动态性~同时避免了内存碎片~是目前许多JVM使用的垃圾回收算法。 , 6.适应算法,adaptive 其主要思想是:在不同的条件下采用不同的回收算法。即动态改变垃圾回收策略。该算法对于垃圾回收的适应性和灵活性有着非常好的调整。
/
本文档为【垃圾回收机制】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索