java入门之GC的算法与种类(4)

来源:互联网 发布:网页淘宝怎么退出登录 编辑:程序博客网 时间:2024/06/05 17:48

java基础

GC:垃圾收集(Garbage Collection),在系统运行过程当中,产生的无用对象\数据等占据着内存空间,这时,GC会回收掉这些无用空间.使程序有更多可用的空间.在c/c++中需要程序员去释放,但是在java中这些由GC来完成,也可防止内存泄漏.GC的对象为永久区和堆空间.

算法:

1.引用计数法:

是一个老牌的垃圾回收算法,通过引用计算来回收垃圾.使用者:COM/ActionScript3/Python.
基本思想:有一个对象的引用计数器来计数一个对象被引用的次数,当一个对象每被引用一次,所对应的引用计数器的计数就会加一,每被释放一次,他的引用计数器的计数就会减一.当引用计数器的计数为零时,表示该对象未被引用.
引用计数法的问题:
a.引用和去引用伴随加法和减法,影响性能.
b.很难处理循环引用.当出现以下情况时,右侧3个无用的循环对象会一直占据着空间而不能被释放,因为他们的引用计数都不为零.

2.标记-清除

标记-清除算法是现代垃圾回收算法的思想基础.标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段.一种可行的实现,在标记阶段,首先通过根节点,标记所有从根节点开始的可达对象.因此,未被标记的对象就是未被引用的垃圾对象.然后,在清除阶段,清除所有未被标记的对象.


3.标记-压缩

标记压缩算法适用于存活对象较多的场合,如老年代.它在标记-清除算法的基础上做了一些优化.和标记-清除算法一样,标记-压缩算法也首先要从根节点开始,对所有的可达对象做一次标记.但之后,它并不简单的清理未标记的对象,而是将所有的存活对象压缩到内存的一端.之后,清理边界外的所有空间.

4.复制算法

a.与标记-清除算法相比,复制算法是一种相对高效的回收方法.
b.不适用于存活对象较多的场合,如老年代.
c.将原有内存空间分为两块,每次只使用其中一块,在垃圾回收时,将正在使用的内存中的存活对象复制到未使用的内存块中,之后,清除正在使用的内存块中的所有对象,交换两个内存的角色,完成垃圾回收.

存在的问题:空间浪费,整合标记清理思想.

分代思想:

一句对象的存活周期进行分类,短命的对象归为新生代,长命的对象归为老年代.
根据不同代的特点,选取合适的收集算法
a.少量对象存活,适合复制算法
b.大对象存活,适合标记清理或者标记压缩.

GC算法总结:

引用计数-没有被java使用.
标记-清除/标记-压缩被使用.其中新生代使用复制算法.

可触及性:

可触及的:从根节点可以触及到这个对象.
可复活的:一旦所有引用被释放,就是可触及状态,在finalize()中可能复活该对象.不可回收.
不接触及的:在finalize()后,可能会进入不可触及状态,不可触及的对象不可能复活,可以回收.
经验:避免使用finalize(),操作不慎可能导致错误.
优先级低,何时被调用,不确定,何时发生GC也不确定.因此,可以使用try-catch-finally代替.

根:

a.栈中引用的对象,
b.方法区中静态成员或者常量引用的对象(全局对象),
c.JNI方法栈中引用的对象.

Stop-The-World

a.java中一种全局暂停现象.
b.全局暂停,所有java代码停止,native代码可以执行,但不能和JVM交互.
c.多半由于GC引起(Dump线程,死锁检查,堆Dump)


















0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 大王卡变3g网是怎么办 无法解析服务器的dns地址怎么办 笔记本dns辅服务器未响应怎么办 原营业执照注销法人没在怎么办? 加盟骗局公安局工商局不管怎么办 发现老婆衣柜里有避孕套怎么办 2岁宝宝爱舔东西怎么办 痔疮手术后痛疼怎么办 长了内痔疮该怎么办 淘宝卖家遇到恶意买家怎么办 淘宝遇到恶意买家拍单怎么办 淘宝遇到买家恶意搞坏商品怎么办 木油味道很重怎么办 床垫外面布坏了怎么办 淘宝店铺动态评分低怎么办 实创倒闭返款怎么办 qq红包忘记支付密码怎么办 qq红包支付密码忘了怎么办 个人卖东西人家要发票怎么办 打了欠条找不到人怎么办 公章掉进水里了怎么办 手游吃鸡限制登入15分钟怎么办 宝宝的小鸡淹了怎么办 宝宝小鸡底下淹了怎么办 4岁宝宝拉稀水怎么办 2岁半宝宝对眼怎么办 孩子在幼儿园中午不睡觉怎么办 20天婴儿拉稀水怎么办 3个月婴儿拉水怎么办 两岁宝宝拉水怎么办 1岁半宝宝拉水怎么办 5周孩子小鸡长脂肪粒怎么办 小孩丁丁长歪了怎么办 2个月的婴儿咳嗽怎么办 2个月的宝宝干咳怎么办 2月宝宝感冒咳嗽怎么办 产妇肚子上长小疙瘩很痒怎么办 泰迪生下小狗不吃奶怎么办? 刚生的狗不吃奶怎么办 刚出生的小牛不吃奶怎么办 吃奶的狗崽拉稀怎么办