垃圾回收(GC)
- 引用计数算法(引用如果互相持有,那么不会被回收)
- 可达性算法(通过图路径算法,通过GCRoot开始搜索引用,不可达节点则被回收)
- 标记清除算法(坏处容易造成内存碎片,好处对象比较多的时候,很容易处理,是不用移动对象)
- 复制算法(可达的引用进行复制到新内存空间,坏处是浪费一块空间进行交换)
- 标记整理算法(消除内存碎片问题)
引用的类型
强引用,软引用,弱引用,虚引用
弱引用的创建
- Object obj = new Object();
WeakReference<Object> wf= new Weakreference(obj);
obj = null;
wf.get();
触发回收
- Java虚拟机无法再为新的对象分配新的内存空间
- System.gc() (十分不推荐,java虚拟机不会立马执行,加大虚拟机压力)
- 低优先级的GC线程被运行就会触发
网友评论