当前位置:网站首页>JVM笔记

JVM笔记

2022-06-26 15:27:00 YMY_666

怎么判断哪些对象需要被回收?
根可达算法,根不可达的对象没有被任何方法引用那么就说无用的对象可被回收
垃圾回收算法有哪些?
在这里插入图片描述

  1. 标记清除会清除掉垃圾对象,但会导致不连续的内存空间。
  2. 标记压缩不但清除掉垃圾对象还会把有用对象压缩到一块,空出连续内存空间,所以优于标记清除。
  3. 拷贝是清除之后将有用对象拷贝到新的区域,比如JVM
    youngGC会把新生代有用对象全部拷贝到一个空的survive区然后把eden区和另一个survivor区的对象全部清除,survivor0和survivor1两个区是轮换的总有一个区是空的,每发生一次youngGC都会把一个区的幸存对象全部拷贝到另一个survive区,也是为了解决内存碎片化问题。
    在这里插入图片描述

垃圾回收器有哪些?
Serial串行垃圾回收器,单线程进行垃圾回收,GC时会STW,业务线程全部停止等GC完了才继续,小内存还可以,大内存垃圾回收耗时会很长
CMS concurrent mark sweep并发标记扫描,为了解决STW而诞生,可以一边回收一边执行业务线程
G1

三色标记算法
自己和自己引用的对象都找到的对象被标记为黑色
自己找到但是自己引用的对象没找到的对象被标记为灰色
自己都没有被找到的对象被标记为白色

原网站

版权声明
本文为[YMY_666]所创,转载请带上原文链接,感谢
https://blog.csdn.net/YMY_666/article/details/125228978