,所以GC的第一步就是需要判断在这个堆空间当中哪些对象还存活着
解决方法
1.引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用,则计数器+1,当引用失效则计数器-1,当计数器为0,则GC...可以进行回收
2.可达性分析算法:通过GC root作为起点,寻找一个对象被引用过程的引用链,当引用链的结果不可达的时候,说明该对象是可以被回收的
Java中的引用
在JDK1.2之前,Java...,软引用会被GC回收
弱引用 : 用来描述非必须的对象,不管当前内存是否不足,都会被GC列为需要回收的对象
虚引用 : 唯一目的就是能在这个对象被收集器回收时收到一个系统通知
回收方法区
对于回收方法区它的性能肯定是不如回收堆空间来的简单...,因为堆空间比方法区会更加消耗内存.但是对于方法区而言也是有两种东西需要回收的,一种是废弃常量,另一种是无用的类.相对的废弃常量判定方法比较简单,没有对它的引用,就说明该常量已经废弃,但是对于无用的类判定的方法就比较复杂...:GC在方法区当中的回收对废弃常量来说还算比较划算,但是对于无用的类则是性价比比较低的,因为本来类加载器就是根据该类是否被用到,从而来将该类加载到内存当中的,然而如果该类已经不存在任何引用了,那么说明这部分的程序也已经基本跑到头了