JVM内功增强篇

Day02 ------JVM内功增强篇

01 结合Eden、S0、S1和Old区,描述一下一个对象创建的过程???
02 怎样确定一个对象为垃圾?
03 常用的垃圾回收算法有哪些?并且有什么优缺点???

答:
Eden、S0、S1(8:1:1)
01、一个对象创建的过程
一个对象被创建—》进入Eden区,Eden区内存不够且该对象存活,使用标记-复制算法(特例:如对象在Eden区放不下,直接放到old区)把它复制到S0区,并清除Eden区不可达的对象。如果S0区满了,该对象转到S1区(对象在S0、S1区来回切换)如多次GC后该对象任然存活(每垃圾回收一次仍然存活则count+)当count>15了,那么该对象直接放入old区。
特例:秒杀项目,一个对象在Eden区被创建后-----朝生夕死
一个对象初次创建存放到新生代的Eden区中,如果内存特别大,直接放到old区;
02、确定一个对象为垃圾
a、通过引用计数法确定一个对象是否为垃圾,存在循环引用就死循环了
b、可达性分析:如果不可达则为垃圾(通过类加载器不可达的,非static变量、非常量----不确定)
c、通过线程共享可以判读对象是否为垃圾;

**=====&#

猜你喜欢

转载自blog.csdn.net/qq_43070471/article/details/104535006