摘要:
Java 技术体系中所提倡的 自动内存管理最终可以归结为自动化地解决了两个问题: 给对象分配内存以及 回收分配给对象的内存, 而且这两个问题针对的内存区域就是 Java 内存模型中的 堆区. 关于对象分配内存问题, 笔者的博文JVM 内存模型概述 http://blog.csdn.net/justloveyou_/article/details/71189093 已经阐述了 如何划分可用空间及其涉及到的线程安全问题, 本文将结合垃圾回收策略进一步给出内存分配规则. 垃圾回收机制的引入可以有效的防止内存泄露, 保证内存的有效使用, 也大大解放了 Java 程序员的双手, 使得他们在编写程序的时候不再需要考虑内存管理. 本文着重介绍了判断一个对象是否可以被回收的两种经典算法, 并详述了四种典型的垃圾回收算法的基本思想及其直接应用 -- 垃圾收集器, 最后结合内存回收策略介绍了内存分配规则.
- public class ReferenceCountingGC {
- public Object instance = null;
- public static void testGC(){
- ReferenceCountingGC objA = new ReferenceCountingGC ();
- ReferenceCountingGC objB = new ReferenceCountingGC ();
- // 对象之间相互循环引用, 对象 objA 和 objB 之间的引用计数永远不可能为 0
- objB.instance = objA;
- objA.instance = objB;
- objA = null;
- objB = null;
- System.gc();
- }
- }
- private static Vector v = new Vector();
- public void test(Vector v){
- for (int i = 1; i<100; i++) {
- Object o = new Object();
- v.add(o);
- o = null;
- }
- }
来源: https://juejin.im/entry/5b84f16e6fb9a019c372d66c