JVM垃圾回收基础
垃圾回收基础什么是垃圾没有任何引用指向的一个对象或多个对象(循环引用)叫做垃圾。
如何定位垃圾引用计数:引用计数为0的对象标记为垃圾,无法解决循环依赖
GC roots:
JVM stack, native method stack, runtime constant pool, static references in method area, Clazz
从GC roots开始遍历所有对象,遍历不到的对象标记为垃圾
常见的垃圾回收算法这里说垃圾回收算法,其实叫垃圾回收思想更合适,因为实际垃圾回收算法都是借鉴了这些思想。
标记清除(Mark Sweep):找到所有垃圾后清除
优点是实现简单,缺点是容易产生内存碎片。
拷贝(Copying):将内存一分为二,只使用其中一份,垃圾回收时,把非垃圾对象拷贝到另一份内存,然后把第一份内存清掉
优点是没有内存碎片,缺点是浪费空间。
标记压缩(Mark Compact):找到所有垃圾后清除,然后把存活对象压缩到一起消除碎片
优点是没有内存碎片,缺点是效率偏低。
JVM内存分代模型jdk1.7:年轻代(You
...