jvm学习(gc算法)

jvm学习(gc算法)

基本算法

  • 引用计数法 (引用)

    这类算法会有一个弊端:两个对象相互引用,会导致回收不了

  • 标记清理

    标记需要被gc的对象,再进行清理,清理后空间还是零散的

  • 标记压缩

    主要针对老年代(存活对象比较多情况),压缩代表,会对内存空间压缩,清理后空间是连续的

  • 复制算法

    复制存活对象 不适合老年代(大对象),一次复制年龄+1 到达一个节点就去老年代。说明一直被引用. from to就是这个意义

    算法小结

  • 少量对象存活:适合复制算法 适用于(新生代)
  • 大量对象存活 适合标记清理标记压缩 适用于(老年代)

action

  • finalize只执行一次
  • GCROOT(根)
    1. 栈中引用的对象
    2. 方法区静态成员或者常量引起的对象
    3. jni引起的对象
  • stop-the-world
    1. java中一种全局暂停的现象
    2. 所有java代码停止 native代码可以执行但不能和Jvm交互
    3. 多半gc引起 也可能程序员dump线程 死锁检查 堆dump