猿教程 Logo

Java垃圾回收

在java中,垃圾表示未引用的对象。

垃圾收集是自动回收运行时未使用的内存的过程。 换句话说,它是一种破坏未使用的对象的方法。

为实现垃圾回收,我们在C语言中中使用的free()函数,C ++中使用delete()函数。 但是,在java中它是自动执行。 所以,java提供了更好的内存管理。

垃圾收集的优势

  • 它使java内存高效利用,因为垃圾收集器从堆内存中删除未引用的对象。

  • 它是由垃圾收集器(JVM的一部分)自动完成的,所以我们不需要做额外的努力。


对象如何不被引用?

有很多方法:

  • 通过取消引用

  • 通过为另一个分配引用

  • 匿名对象等

1)通过将引用置null:

相关实例:

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关键字创建的那些对象。 所以如果你创建了没有new的任何对象,你可以使用finalize方法来执行清理处理(破坏剩余的对象)。


gc()方法

gc()方法用于调用垃圾收集器以执行清理处理。 gc()在System和Runtime类中找到。

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

注意:既不完成也不保证垃圾收集。


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Java/Garbage-Collection-java.html