C C++ 需要自己回收垃圾
重复回收: 回收掉别人的东西
忘记回收: 内存泄漏
Java虚拟机做自动化回收
垃圾回收器

Root Searching(根可达)
GC Algorithms(垃圾回收算法)
Mark-Sweep(标记清除)
缺点:碎片化,一个洞一个洞
Copying(拷贝)
缺点:内存浪费,每块内存只用一半
Mark-compact(标记压缩)
缺点:把标记的删除,把有用的内容前移
GC的演化
随着内存大小的不断增长而演化
Java1.8

new: old = 1:2
伊甸园区和幸存者区
伊甸园区
新诞生的对象都在这里
发生在新生代YGC
幸存者区
幸存者1 和 幸存者2 总有一个是空的
Serial(序列化回收)
- a stop-the-world ,copying collector which uses a single GC thread
Parallel Scavenge(并行清扫)
- a stop-the-world ,copying collector which uses multiple GC thread
CMS
- concurrent mark sweep
- a mostly concurrent, low-pause collector
大内存,用CMS太坑
三色标记算法

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kAh0Dlx7-1673255208817)(D:\学习\java\GC\gc_image\1673253681039.png)]](https://img-blog.csdnimg.cn/4ecf53c46da84906821e9aaee17ea038.png)
CMS会存在的问题
浮动垃圾会触发STW
GMS最后会remark,会触发STW
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XRrFxyOp-1673255208817)(D:\学习\java\GC\gc_image\1673254028285.png)]](https://img-blog.csdnimg.cn/ed4600a5c2744d36a37c102131fe25d2.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Tw6XFie-1673255208817)(D:\学习\java\GC\gc_image\1673254457748.png)]](https://img-blog.csdnimg.cn/97a7e76d220c4fa5b0caa0ec72b36795.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JpvPC97q-1673255208818)(D:\学习\java\GC\gc_image\1673254494329.png)]](https://img-blog.csdnimg.cn/72d6481c822341f78afa24ba50865f65.png)









![[ 数据结构 ] 图(Graph)--------深度优先、广度优先遍历](https://img-blog.csdnimg.cn/img_convert/b007c0fc4996d3f0def1780c007b3851.png)








