JVM的垃圾回收算法详解,不看实在是太亏了!
前言 今天同学在课前演讲,大致讲了一下java虚拟机,讲的很快也很浅,反正听的迷迷糊糊的,自己下来从新进行查找资料进行整理学习,先将JVM里面的垃圾回收机制中算法进行归拢,整理如下,如有错误或不足请留言或私信告知,定会改正! 垃圾回收机制图 垃圾对象判定标准 JVM的GC工作主要针对的对象是堆内存,在做GC工作之前,首先要判定堆内存中的对象实例是否为垃圾,通常使用以下两种算法来定义 1.引用计数算法 java在运行时,当有一个地方引用该对象实例,会将这个对象实例加1,引用失效时就减1,jvm在扫描内存时,发现引用计数值为0的则是垃圾对象,计数值大于0的则为活跃对象。 目前垃圾回收算法,没有采用引用计数算法,原因是在对象互相引用的情况下,无法判定两者是否为垃圾对象。 2.根搜索算法 根搜索算法是以“GC ROOTS”为起始点往下搜索,所有经过的对象合并起来称为引用链,在这引用链里,没有的对象称为垃圾对象,(实际上jvm还做了一个筛选动作,判定当前对象是否执行finalize()方法,如果不需要执行才判定为垃圾对象,这里不做介绍),在引用链里的是活跃对象。那什么样的对象才能称为“GC RO...