java 垃圾收集,java 垃圾收集机制:代码示例

wangyetexiao

温馨提示:这篇文章已超过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垃圾收集的机制。

文章版权声明:除非注明,否则均为莫宇前端原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码