版权声明:本文为博主原创文章,转载请说明出处。
今天重新看了Thinking in java中垃圾回收和终极处理原理。
[1]java中有负责回收无用对象占据内存资源的垃圾回收器,但是垃圾回收器只知道释放那些有new分配的内存。而对于不是由new分配的内存无法进行释放,java中允许在类中定义一个finalize()方法。
[2]finalize()方法的原理:
[2.1]垃圾回收器准备释放对象所占内存
[2.2]先调用inalize()方法
[2.3]在下一次垃圾回收动作发生时,才会真正回收对象占用的内存
[3]在java中,你需要明白一下几点,才能更好的理解垃圾回收机制:
[3.1]对象可能不被垃圾回收处理
[3.2]垃圾回收不等于c++的析构函数
[3.3]垃圾回收只与内存有关
package cxy.first;
//终极处理和垃圾回收
//java有垃圾回收机制回收new分配的内存,finalize()用于回收不是new分配的内存
//[1]对象可能不被垃圾回收
//[2]垃圾回收不等于析构函数
//[3]垃圾回收只与内存有关
class Book{
boolean checkedOut=false;
Book(boolean checkOut){
checkedOut=checkOut;
}
void checkIn(){
checkedOut=false;
}
protected void fianlize(){
if(checkedOut)
System.out.println("Erro:checked out");
}
}
public class TerminationCondition {
public static void main(String[] args){
Book novel=new Book(true);
novel.checkIn();
new Book(true);
System.gc();
}
}
网友评论