JVM的内存结构:
垃圾回收
什么对象可以回收
注意:1,途中实线表示强引用,有GC Root指出的强引用的对象不能被回收,
2,当一个对象只有软引用指向时,并且当垃圾回收机制回收一次后发现内存任然不够,再回收该对象,
3,当一个对象只有弱引用指向时,当垃圾回收机制回收时,会直接回收掉,
4,配合引用队列,当软,弱对象指向的对象被回收时,会进入引用的队列中。再一词释放。
5,虚引用,终结器引用与上面两种引用不同,它必须与引用队列关联使用,上面两种引用不一定要关联引用队列使用。
6, 虚引用的典型用法:虚引用指向的对象被回收后,虚引用对象自身会进入被一个线程监控的引用队列中,调用方法释放直接内存 的空间。
注意:(软,弱引用本身就是一个对象)
强引用的对象一定不会被回收。
垃圾回收的算法
标记整理算法:
标记清除算法
复制算法:
回收机制的总结
回收器
串行
加载
类加载器的双亲委托模型的源码: