一、判断对象是否存活的算法(内存管理): (1)引用计数算法(Reference Counting):给对象中添加一个引用计数器,引用+1,引用失效-1,为0的对象是不可能再被用的。微软的COM(Component Object Model)技术等。(java没用它主要缘由是它很难解决对象之间的相互循环引用的问题。) (2)根搜索算法(GC Roots Tracing):经过一系列的名为“GC Roots”的对象做为起点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连,是不可用对象,可回收。 Java中做为GC Roots对象:虚拟机栈中的引用的对象/方法区中的类静态属性引用的对象和常量引用的对象、本地方法栈中JNI的引用的对象。 引用分四类:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、虚引用(Phantom Reference) 不可达对象死亡至少经历两次标记过程:第一次标记并筛选是否finalize()----finalize------F-Queue----标记第二次 回收方法区(常量和类)