众所周知,
Java中的对象是引用变量。它们被声明为特定类型,并且它们的类型永远不会改变。
在编写Java程序时,会创建许多对象,但实际上并非所有对象都在程序中使用。内存空间已分配给所有这些对象,但其中一些未被使用,因此必须使该内存空间可用于创建其他新对象。
这就是垃圾收集发挥作用的地方。
如果为任何对象分配了null或它们丢失了引用,那么Java运行时环境(JVM)就有责任将该对象的位置标记为垃圾回收(GC)。
当我们运行Java程序时,Java虚拟机将创建三个线程。
主线程-负责执行Java程序的main方法。
Scheduler Thread-它负责调度线程。
垃圾收集器线程-负责通过为对象分配null来清理被取消引用的对象的内存堆。
在清除分配有null的对象的内存之前,它将调用finalize()
该对象的方法。执行finalize()
方法后,将执行该finalize()
方法下的操作,并销毁对象。
System.gc(); /* This Method Destroys Location of those Objects which are marked with GC.*/
注意: System.gc()遵循基于堆栈的操作,我们将在接下来的示例中看到这一点。