垃圾回收
1. 什么是垃圾?内存中没用的对象 2. 为什么需要 GC? 如果不进行垃圾回收,内存迟早会用完 除了释放内存中没用的对象,GC 也可以清除内存里的记录碎片。便于 JVM 将整理出来的内存分配给新的对象 应用程序的业务越来越庞大、复杂,没有 GC 就不能保证程序的正常运行 经常造成 STW 的 GC 又跟不上实际的需求,所以才会不断的尝试对 GC 进行优化 3. 垃圾标记阶段算法在堆里存放着几乎所有的 Java 对象实例,在 GC 进行垃圾回收前,需要区分出内存中哪些是存活对象,哪些是死亡对象,该过程称为 垃圾标记阶段。 3.1 引用计数算法对每个对象保存一个整型的引用计数器属性,用于记录对象被引用的情况。 对于一个对象 A, 只要有任何一个对象引用了 A, 则 A 的引用计数器就加 1;当引用失效时,引用计数器就减 1。 只要对象 A 的引用计数器的值为 0,即表示对象 A 不可能再被使用,可进行回收。 优点: 实现简单,垃圾对象便于辨识 判定效率高,回收没有延迟性 缺点: 它需要单独的字段存储计数器,这样的做法增加了存储空间的开销 每次赋值都需要更新计数器,...

