Java垃圾回收机制

简述

在Java中,当一个对象成为垃圾后仍会占用内存空间,时间一长,就会导致内存空间的不足。针对这种情况,Java中引入了垃圾回收机制。

一个对象在成为垃圾后会暂时地保留在内存中,当这样的垃圾堆积到一定程度时,Java虚拟机就会启动垃圾回收器将这些垃圾从内存中释放,从而使程序获得更多的可用空间。

除了等待Java虚拟机进行自动垃圾回收外,我们还可以通过调用System.gc()方法来通知Java虚拟机立即进行垃圾回收。

当一个对象在内存中被释放时,它的finalize()方法会自动被调用,因此可以在类中通过定义finalize()方法来观察对象何时被释放。

package trash;
class Person{
     
    //下面定义的finalize方法会在垃圾回收之前被调用
    public void finalize(){
     
        System.out.println("收垃圾喽,收垃圾,两块钱一斤。");
    }
}

public class Demo01 {
     
    public static void main(String[] args) {
     
        //下面创建两个Person对象
        Person person = new Person();
        Person person1 = new Person();
        //下面将变量置为null,让对象成为垃圾
        person=null;
        person1=null;
        //调用方法进行垃圾回收
        System.gc();
        for (int i = 0; i < 10000; i++) {
     
            //为了延长程序运行的时间
        }
    }
}

运行结果

Java垃圾回收机制_第1张图片
需要注意的是,Java虚拟机的垃圾回收操作是在后台完成的,程序结束后,垃圾回收的操作也将终止,因此程序最后使用了一个for循环,延长程序运行时间,从而能够更好的看到垃圾对象被回收的过程。

Java垃圾回收机制_第2张图片
Java垃圾回收机制_第3张图片
这里我们去掉for循环,则无法看到运行结果。

你可能感兴趣的:(java,java)