Java教程

Java垃圾回收

在Java中,垃圾意味着未引用的对象。
垃圾收集是自动回收运行时未使用的内存的过程。换句话说,这是销毁未使用对象的一种方法。
为此,我们使用C语言中的free()函数和C ++中的delete()。但是,在Java中它是自动执行的。因此,java提供了更好的内存管理。

垃圾回收的优势

这使Java 内存高效,因为垃圾收集器从堆内存中删除了未引用的对象。 这是由垃圾收集器(JVM的一部分)自动完成的,因此我们无需付出额外的努力。

如何取消引用对象?

有很多方法:
通过取消引用 通过分配对另一个的引用 通过匿名对象等 Java垃圾回收方案

1)通过使引用无效:

Employee e=new Employee();
e=null;

2)通过将引用分配给另一个:

Employee e1=new Employee();
Employee e2=new Employee();
e1=e2;
//now the first object referred by e1 is available for garbage collection

3)通过匿名对象:

new Employee();

finalize()方法

每次在垃圾回收对象之前调用finalize()方法。此方法可用于执行清理处理。此方法在Object类中定义为:
protected void finalize(){
}
注意: JVM的垃圾收集器仅收集那些由new关键字创建的对象。因此,如果您创建了没有新对象的对象,则可以使用finalize方法执行清理处理(销毁其余对象)。

gc()方法

gc()方法用于调用垃圾收集器以执行清理处理。 gc()在系统和运行时类中找到。
public static void gc(){
}
注意: 垃圾回收是通过称为垃圾回收器(GC)的守护程序线程执行的。在对象被垃圾回收之前,该线程调用finalize()方法。

Java中垃圾回收的简单示例

public class TestGarbage1{
    public void finalize(){
        System.out.println("object is garbage collected");
    }
    public static void main(String args[]){
        TestGarbage1 s1=new TestGarbage1();
        TestGarbage1 s2=new TestGarbage1();
        s1=null;
        s2=null;
        System.gc();
    }
}
object is garbage collected object is garbage collected
注意: 既不能保证终结也不能保证垃圾回收。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4