-垃圾收集器内存分配策略

Posted coding-gaga

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了-垃圾收集器内存分配策略相关的知识,希望对你有一定的参考价值。

垃圾收集器

判断对象是否需存活

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

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

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

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

内存分配

以上是关于-垃圾收集器内存分配策略的主要内容,如果未能解决你的问题,请参考以下文章

Java虚拟机浅谈——垃圾收集器与内存分配策略

Java垃圾收集器与内存分配策略

垃圾收集器与内存分配策略之垃圾收集算法

垃圾收集器与内存分配策略

垃圾收集器与内存分配策略---垃圾收集算法

垃圾收集器与内存分配策略