Java垃圾回收

本文概述

  • 如何取消引用对象?
  • finalize()方法
  • gc()方法
在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

注意:终结和垃圾收集都不被保证。

    推荐阅读