Java 垃圾回收
精华
小牛编辑
118浏览
2023-03-14
1 什么是Java 垃圾回收
在Java中,垃圾意味着未引用的对象。
垃圾回收是自动回收运行时未使用的内存的过程。换句话说,这是销毁未使用对象的一种方法。
我们在C语言中使用free() 函数,在C ++中使用delete()。但是,在Java中它是自动执行的。因此,java提供了更好的内存管理。
2 Java 垃圾回收的优势
- 它使Java内存更加高效,因为垃圾回收器从堆内存中删除了未引用的对象。
- 它由垃圾收集器(JVM的一部分)自动完成,因此我们无需付出额外的工作。
3 如何取消对象引用
有很多方法可以取消对应引用:
- 通过取消引用
- 通过分配对另一个的引用
- 通过匿名对象
3.1 通过取消引用
Employee e=new Employee();
e=null;
3.2 通过分配对另一个的引用
Employee e1=new Employee();
Employee e2=new Employee();
e1=e2;//now the first object referred by e1 is available for garbage collection
3.3 通过匿名对象
new Employee();
4 finalize()方法
每次在垃圾回收对象之前会调用finalize()方法。finalize()方法可用于执行清理操作。finalize方法定义在Object类中:
protected void finalize(){}
注意:JVM的垃圾收集器仅收集那些由new关键字创建的对象。因此,如果您创建了不是使用new的任何对象,则可以使用finalize方法执行清理操作(销毁这些对象)。
5 gc()方法
gc() 方法用于调用垃圾收集器以执行清理操作。gc() 定义在System和Runtime类中。
public static void gc(){}
注意:垃圾收集是由称为垃圾收集器(GC)的守护程序线程执行的。在对象被垃圾回收之前,该线程调用finalize()方法。
6 Java 垃圾回收的例子
package cn.xnip;
/**
* 小牛知识库网: https://www.xnip.cn
*/
/**
* Java 垃圾回收的例子
*/
public class Demo{
public void finalize(){
System.out.println("object is garbage collected");
}
public static void main(String args[]){
Demo s1=new Demo();
Demo s2=new Demo();
s1=null;
s2=null;
System.gc();
}
}
输出结果为:
object is garbage collected
object is garbage collected
注意:终结和垃圾收集都不被保证的。