Question:GC发生在JVM哪部分,有几种GC,算法各是什么???
GC发生在堆里面,2种
四大算法
1、引用计数法![](https://img-blog.csdnimg.cn/20191214191627355.png)
tips:较难处理循环引用,被淘汰了
2、标记清除
![](https://img-blog.csdnimg.cn/20191214191631590.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2ODk1NDU3,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20191214191631556.png)
tips:两次扫描(标记、清除)、会产生内存碎片、不需要额外空间、发生在老生代
3、复制
tips:双倍空间、效率高、无内存碎片、发生在新生代
4、标记整理
tips:两次扫描(标记、挪动)、移动消耗时间、没有内存碎片、发生在老年代
上面可以看到老年代有两种,一般是多次先标记-清除,产生很多内存碎片后,再用标记-整理