千锋教育-做有情怀、有良心、有品质的职业教育机构
1. 判断对象是否已死的算法
- 引用计数器算法
- 可达性分析算法
2. GC算法
2.1 标记清除算法 如果对象被标记后进行清除,会带来一个新的问题--内存碎片化。如果下次有比较大的对象实例需要在堆上分配较大的内存空间时,可能会出现无法找到足够的连续内存而不得不再次触发垃圾回收。
2.2 复制算法(Java堆中新生代的垃圾回收算法) 先标记待回收内存和不用回收内存; 将不用回收的内存复制到新的内存区域; 就的内存区域就可以被全部回收了,而新的内存区域也是连续的; 缺点是损失部分系统内存,因为腾出部分内存进行复制。
2.3 标记压缩算法(Java堆中老年代的垃圾回收算法) 对于新生代,大部分对象都不会存活,所以复制算法较高效,但对于老年代,大部分对象可能要继续存活,如果此时使用复制算法,效率会降低。 标记压缩算法首先还是标记,将不用回收的内存对象压缩到内存一端,此时即可清除边界处的内存,这样就能避免复制算法带来的效率问题,同时也能避免内存碎片化的问题。 老年代的垃圾回收算法称为“Major GC”。
下一篇
JVM的类加载机制是什么?相关推荐