GC算法与分类(Java虚拟机)

一 . GC算法总结

    1.引用计数(淘汰)


    

2.标记-清除


    3.标记-压缩


    4.复制算法

          -新生代



二 . 理解分代思想:

  1.依据对象的存活周期进行分类,短命对象为新生代,长命对象归为老年代.

  2.根据不同年代的特点,选取合适的收集算法

        - 少量对象存活,适合复制算法

        - 大量对象存活,适合标记清理或者标记压缩


所有的算法,都需要能够识别一个垃圾对象, 因此需要给出一个可触及性的定义.

三. 可触及性.

     1.可触及的

        - 从根节点可以触及这个对象

     2. 可复活的

        - 一旦所有引用被释放,就是可复活状态

        - 因为在finalize()中可能复活该对象

     3. 不可触及的

       - 在finalize()后,可能会进入不可触及状态

       - 不可触及的对象不可能复活

        - 可以回收

下面一个例子帮助理解


所以: 避免使用finalize(); === 什么是finalize(),点击链接

    - 栈中引用的对象

    - 方法区中静态成员或者常量引用的对象(全局对象)

    - JNI方法栈中引用的对象

GC引起的全局停顿:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值