其他垃圾

详解java垃圾回收机制(转)及finalize方法(转)

大兔子大兔子 提交于 2019-11-27 19:35:30
详细介绍Java垃圾回收机制 垃圾收集 GC(Garbage Collection)是Java语言的核心技术之一,之前我们曾专门探讨过Java 7新增的垃圾回收器G1的新特性,但在JVM的内部运行机制上看,Java的垃圾回收原理与机制并未改变。垃圾收集的目的在于清除不再使用的对象。GC通过确定对象是否被活动对象引用来确定是否收集该对象。GC首先要判断该对象是否是时候可以收集。两种常用的方法是引用计数和对象引用遍历。 引用计数收集器 引用计数是垃圾收集器中的早期策略。在这种方法中,堆中每个对象(不是引用)都有一个引用计数。当一个对象被创建时,且将该对象分配给一个变量,该变量计数设置为1。当任何其它变量被赋值为这个对象的引用时,计数加1(a = b,则b引用的对象+1),但当一个对象的某个引用超过了生命周期或者被设置为一个新值时,对象的引用计数减1。任何引用计数为0的对象可以被当作垃圾收集。 当一个对象被垃圾收集时,它引用的任何对象计数减1。 这儿我的理解是: A a=new A(); //(此时这儿的 new A(); 是对象一,a为引用,这时间引用计数为1 ) A b=a; //(这时间 引用计数为 1+1=2) b=new A();//(此时这儿的 new A(); 是对象二,对象二的引用计数为1,b为引用,这时间引用计数为1--之前对象一的引用计数为 2-1=1 ) a=b;/