码迷,mamicode.com
首页 > 其他好文 > 详细

[深入理解JVM虚拟机]第3章-垃圾收集器、内存分配策略

时间:2019-07-27 15:43:26      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:引用计数   加载   roo   分析   loader   strong   必须   是否存活   tom   

垃圾收集器

判断对象是否需存活

  • 回收堆
    • 判断对象是否存活:
      • 方法一:引用计数法。对象被引用一次就+1,当为0时回收对象。缺点:无法解决循环引用问题。
      • 方法二:可达性分析算法。记录当前对象是否有和GC Roots中对象的引用链。(其中,可以作为GCRoots对象的有:虚拟机栈中引用的对象、方法去中类静态属性引用的对象、方法区中常量引用的对象、本地方法栈中引用的对象。)
        • 不可达对象并不是一定被垃圾收集的,当这个对象有必要执行finalize()并finalize里自己和某个对象建立关联,即可在第二次标记时被移出“即将回收”的集合。但强烈建议不在finalize()里来拯救对象,使用try-finally等其他方式或许更好。
    • 引用分为:强引用(new出来的)、软引用(SoftReference类实现)、弱引用(WeakReference类实现)、虚引用(PhantomReference类实现)。是为了描述一类对象:内存空间还够的时候能保存在内存,不够就可以抛弃这些对象。
  • 回收方法区
    • 主要是回收方法区中的废弃常量无用的类
      • 无用的类必须满足三点:Java堆中不存在该类实例;加载该类的ClassLoader已经被回收;该类对应的java.lang.Class对象没有在其他地方被引用。
      • 无用的类不一定要被回收,可以通过参数与进行控制。

垃圾收集算法(内存回收方法论)

HotSpot的算法实现(HotSpot如何发起内存回收)

垃圾收集器(内存回收的具体实现、特点)

内存分配

[深入理解JVM虚拟机]第3章-垃圾收集器、内存分配策略

标签:引用计数   加载   roo   分析   loader   strong   必须   是否存活   tom   

原文地址:https://www.cnblogs.com/coding-gaga/p/11255289.html

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