温馨提示:这篇文章已超过239天没有更新,请注意相关的内容是否还可用!
Java垃圾收集(Garbage Collection)是一种自动内存管理机制,它负责在程序运行过程中,自动回收不再被使用的内存空间。垃圾收集器会定期扫描程序中的对象,标记出那些仍然被引用的对象,并清除那些没有被引用的对象,释放它们占用的内存空间。这样可以避免内存泄漏和内存溢出的问题,提高程序的性能和稳定性。
示例代码如下所示:
public class GarbageCollectionExample {
public static void main(String[] args) {
// 创建一个对象
MyClass obj1 = new MyClass();
// 将obj1赋值给obj2,此时两个引用指向同一个对象
MyClass obj2 = obj1;
// 将obj1置为null,此时只有obj2还指向该对象
obj1 = null;
// 执行垃圾收集
System.gc();
// obj2仍然可以访问到对象的成员变量
System.out.println(obj2.getValue());
}
}
class MyClass {
private int value;
public MyClass() {
value = 10;
}
public int getValue() {
return value;
}
@Override
protected void finalize() throws Throwable {
System.out.println("对象被回收");
super.finalize();
}
}
在上面的示例代码中,我们创建了一个`MyClass`类的实例对象`obj1`,然后将它赋值给另一个引用`obj2`。接着,我们将`obj1`置为null,这意味着没有任何引用指向该对象了。当我们调用`System.gc()`方法时,垃圾收集器会被触发,它会扫描程序中的对象,发现`obj1`没有被引用,因此将其回收。在`MyClass`类中,我们重写了`finalize()`方法,在对象被回收时会被调用,我们在该方法中打印了一条消息。
我们输出`obj2.getValue()`的结果,可以看到仍然可以访问到对象的成员变量,说明垃圾收集器只回收了没有被引用的对象,而没有影响到仍然被引用的对象。这就是Java垃圾收集的机制。