在Java中,当一个对象成为垃圾后仍会占用内存空间,时间一长,就会导致内存空间的不足。Java虚拟机会自动回收垃圾对象所占用的内存空间。
除了等待Java虚拟机进行自动垃圾回收,也可以通过调用System.gc()方法来通知Java虚拟机立即进行垃圾回收。
当一个对象 在内存中被释放 时,它的finalize()方法会被自动调用,因此可以在类中通过定义finalize()方法来观察对象何时被释放。
public class JBTest_002 { public static void main(String[] args) { //下面创建了两个Person对象 Person person1 = new Person(); Person person2 = new Person(); //下面将变量置为null,让对象成为垃圾 person1 = null; person2 = null; //调用方法进行垃圾回收 System.gc(); for(int i=0; i<1000000; i++){ //为了版型延长程序运行的时间 } } }
class Person { // 下面定义的finalize方法会在垃圾 回收前被调用 public void finalize() { System.out.println("对象将被作为垃圾回收。。。。"); } } |
注意:Java虚拟机的垃圾 回收操作是在后台完成的,程序结束后,垃圾回收的操作也将终止。因此,在程序的最后使用了一个for循环,延长各么 运行的时间,从而能够更好 地看到垃圾被回收的过程。