继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

深入理解Java虚拟机-学习笔记-2垃圾回收机制

Be_Better
关注TA
已关注
手记 6
粉丝 1
获赞 7

判定对象是否可以回收的算法:

    1.引用计数器 劣势 相互引用问题

    2.可达性分析 GC Roots作为起始点,形成引用链。GC Roots对象包含几钟类型(虚拟机栈中引用的对象、方法区静态属性应用的对象、方法区中常量引用的对象、native方法引用的对象) Java选用


引用分类:

    1.强引用 永远不会被回收

    2.软引用 SoftReference标识,内存溢出之前进行二次回收

    3.弱引用 WeakReference标识,下一次垃圾回收就回收。

    4.虚引用 PhantomReference标识,直接回收并收到一个系统通知


finalize()方法,假如实例的类实现了该方法且并没有执行过该方法,那么在被标记为不可达之后会将对象放置到一个F-Queue中,由一个低优先级的Finalizer线程去执行finalize()方法,并且不保证改方法执行完毕。不建议使用。


方法区(Hotspot中的永久代)回收问题:  方法区主要回收废弃常量和无用的类,暂不深入分析。


垃圾回收算法:

    1.标记清除 标记需要回收的对象,同一回收。劣势 效率和内存碎片化

    2.复制算法 基本思路是分成两块 使用一块 将存活的复制到另一块,清理掉其他的。Hotspot新生代的优化思路是一块Eden和两块Survivor,8:1,使用一块Eden合一块Survivor。Survivor不够用时分配对象到老年代。

    3.标记-整理 标记 回收时向一段移动,清理掉其他。老年代算法。

OopMap辅助寻找GC Roots,枚举根节点、安全点问题、安全区域问题待再次探讨。

新生代垃圾回收器:

    1.Serial    单线程,必须暂停其他线程

    2.ParNew  Serial的多线程版本

    3.Parallel Scavenge

老年代垃圾回收器:

    1.CMS

    2.Parallel Old

    3.Serial Old

全年代: G1


日志理解:


  • 内存分配与回收策略:待细致分析

    



  

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP