上周出去面试的一位精神小伙,回来后突然不精神了,一问,原来面试过程中面试官让他解释一下,「什么是YoungGC 和 FullGC?」
他按照面试宝典上的答案给面试官说了,但不是面试官想要的答案啊,瞬间整个人就怂了,最后被怼的无言以对。
确实,在JVM优化部分,我们会接触到 什么 MinorGC,YoungGC、FullGC、OldGC、MajorGC 等等,感觉这些各种乱七八糟都是什么啊,很容易弄混。
而这些词呢,在面试的过程中,也经常被问到。面试官问的不深,有可能只是考一下你对这些名词的理解。
而且说实话,这些名词,翻译来翻译去,在业内也没有完全统一的标准,而且有时在不同的书上, 不同的文章里,对同一个名词的定义都是有所不同的。
所以,是很有可能出现:你的理解和面试官的理解是不同的,这时一定不要慌啊。
在面试时遇到这种情况,「一个名词可能有的多种不同的理解」时,我们要尽可能的都做出说明,避免歧义,防止面试官对你产生不好的误会,甚至自己怀疑自己。
MinorGC,YoungGC
ok,我们首先来看最简的慨念: MinorGC ˈmaɪnər] / YoungGC
可以看到在GC日志中,FullGC会同时对年轻代、老年代、永久代都进行了垃圾回收。
最后,小结一下:
YoungGC 就是年轻代的gc ,OldGC就是老年代的gc ,FullGC是针对年轻代、老年代、永久代进行的整体的gc 。 而且还有几个其他的名词跟他们有重叠的含义,
比如 MinorGC也可以称之为YoungGC,MajorGC也可以称之为OldGC,
有的人也把Major GC和Full GC划等号,也有人把Full GC和Old GC划等号。
所以以后大家在外面跟人聊起各种GC名词的时候,一定要问清楚他指代的到底是什么哦!