【GC系列】JVM垃圾定位及垃圾回收算法浅析
目录
1. 什么是垃圾
2. 如何找到垃圾
2.1. 引用计数
2.2. 根可达算法
3. 常见的垃圾回收算法
3.1. 标记清除
3.2. 拷贝算法
3.3. 标记压缩
4. 小结
1. 什么是垃圾
很简单,没有引用指向的任何对象都叫做垃圾(garbage)。
什么是garbage
在某一内存空间中,Java程序制造了很多对象被引用,有的对象还引用别的对象,中途有对象不被需要了就没有指向他的引用了,这些没有引用指向的东西就是垃圾。
这些垃圾不需要自己回收,JVM中有类似于街道上那些勤劳的环卫工的人,在帮忙回收垃圾。
2. 如何找到垃圾
那么,帮忙回收垃圾的人是如何找到垃圾的呢?JVM中一般有两种算法:
Reference Count 引用计数Root Searching 根可达算法
2.1. 引用计数
引用计数法设定给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值加1;当引用失效时,计数器值减1,引用数量为0的时候,则说明对象没有被任何引用指向,,可以认定是“垃圾”对象
共有 0 条评论