对象与垃圾回收
2014-11-27 20:56
120 查看
7.对象在内存中有三种状态:激活,去活,死亡状态。
8.激活状态:当一个对象被创建后,有一个以上的引用变量引用它,则这个对象在程序中处于激活状态
9.去活状态:如果程序中的对象不再有任何引用变量引用它,就进入去活状态。在去活状态下,系统的垃圾回收机制准备回收该对象所
占用的内存。在回收该对象前,系统会调用所有去活状态对象的finalize方法
10.通过finalize方法可以实现从去活状态到激活状态
11.通过Runtime.getRuntime().runFinalization();可以运行强制垃圾回收机制调用去活对象的finalize()方法
12.弱引用:当系统垃圾回收机制运行时,无论系统内存是否足够,总是会回收该对象所占用的内存
13.虚引用:用于跟踪对象被垃圾回收的状态,一般与引用队列联合使用
8.激活状态:当一个对象被创建后,有一个以上的引用变量引用它,则这个对象在程序中处于激活状态
9.去活状态:如果程序中的对象不再有任何引用变量引用它,就进入去活状态。在去活状态下,系统的垃圾回收机制准备回收该对象所
占用的内存。在回收该对象前,系统会调用所有去活状态对象的finalize方法
10.通过finalize方法可以实现从去活状态到激活状态
11.通过Runtime.getRuntime().runFinalization();可以运行强制垃圾回收机制调用去活对象的finalize()方法
public class TestFinalize { private static TestFinalize tf=null; public void info(){ System.out.println("测试资源清理的finalize"); } public static void main(String[] args) { new TestFinalize(); //通知系统进行资源回收 System.gc(); //强制垃圾回收机制调用去活对象的finalize() Runtime.getRuntime().runFinalization(); tf.info(); } public void finalize(){ //去活对象重新激活 tf=this; } }
12.弱引用:当系统垃圾回收机制运行时,无论系统内存是否足够,总是会回收该对象所占用的内存
13.虚引用:用于跟踪对象被垃圾回收的状态,一般与引用队列联合使用
import java.lang.ref.ReferenceQueue; import java.lang.ref.PhantomReference; public class TestPhantomReference { public static void main(String[] args) throws Exception { String str=new String("fuck"); //创建一个引用队列 ReferenceQueue rq=new ReferenceQueue(); //创建一个虚引用 PhantomReference pr=new PhantomReference(str,rq); //q切断str引用 str=null; //不能通过虚引用访问被引用对象 System.out.println(pr.get()); System.gc(); System.runFinalization(); //对象被回收后,虚引用被添加到引用队列中。取出引用队列中最先进入队列中的引用与pr比较 System.out.println(rq.poll()==pr); } }
相关文章推荐
- C++的垃圾回收——以对象管理内存
- 图解JVM在内存中申请对象及垃圾回收流程
- 流程的Python 第八章:对象引用、可变性和垃圾回收
- .NET对象的创建、垃圾回收、非托管资源的手动处理
- .Net 垃圾回收和大对象处理
- 【译】.Net 垃圾回收和大对象处理
- 八、java对象和方法区的垃圾回收
- WeakReference--弱引用,即在引用对象的同时仍然允许通过垃圾回收来回收该对象。
- c# -- 对象销毁和垃圾回收
- Java 详解垃圾回收与对象生命周期
- Java中的垃圾回收问题以及在创建对象的时候的内存的分析
- Java对象与垃圾回收
- 对象与垃圾回收
- java对象清除和垃圾回收
- jvm(三):对象引用与垃圾回收
- Java中的垃圾回收与对象生命周期
- Java中的垃圾回收与对象生命周期
- 内存代管理器TenuredGeneration对垃圾对象的回收
- 牛客网Java刷题知识点之垃圾回收算法过程、哪些内存需要回收、被标记需要清除对象的自我救赎、对象将根据存活的时间被分为:年轻代、年老代(Old Generation)、永久代、垃圾回收器的分类
- java gc垃圾回收机制主要回收堆内的对象