那为什么我们还要去了解GC和内存分配呢
答:当需要排查各种内存溢出,内存泄漏问题时,当垃圾收集成为系统达到更高并发量的
瓶颈时,我们就需要对这些自动化的技术实施必要的监控和调节
引用技术算法
判断对象是否存活的算法:给对象添加一个引用计数器,每当有一个地方引用的时候,计数器加1
当引用失效时坚减1,任何计数器都为0的对象就是不可能再被使用的。
Java中没有引用计数算法来管理内存,因为很难解决对象之间相互循环引用的问题
在主流的商用程序语言中,都是使用根搜索算法判定对象是否存活的,这个算法的基本思路就是通过一些列的
GC roots的对象作为起始点,从这些节点向下搜索,搜索所走过的路径成为引用链,当一个对象等到
GcRoots没有任何引用链,则证明对象不可用,是可回收的对象