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