Java垃圾收集

在java中,垃圾意味着未引用的对象。

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

它类似于,在C语言中使用free()函数,在C++中使用delete()。 但是,在java中这些会自动执行。因此,java提供了更好的内存管理。

垃圾收集的好处

  • 它使java内存有效,因为垃圾收集器从堆内存中删除未引用的对象。
  • 它由垃圾收集器(JVM的一部分)自动完成,因此开发人员不需要额外的工作。

如何对象不被引用?

有以下几个方法:

  • 通过归零引用
  • 通过为另一个分配引用
  • 通过匿名对象等
1. 通过归零引用:
Employee e=new Employee();  
e=null;

Java

2. 通过为另一个分配引用:
Employee e1=new Employee();  
Employee e2=new Employee();  
e1=e2;//now the first object referred by e1 is available for garbage collection

Java

3. 通过匿名对象:
new Employee();

Java

finalize()方法

每次在对象被垃圾回收之前调用finalize()方法。 此方法可用于执行清理处理。 此方法在Object类中定义为:

protected void finalize(){}

Java

注意 :JVM的垃圾收集器仅收集由new关键字创建的对象。 因此,如果创建了没有new的任何对象,则可以使用finalize方法执行清理处理(销毁剩余对象)。

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

public static void gc(){}

Java

注意 :垃圾收集由称为垃圾收集器(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();  
     }  
}

Java

执行上面示例代码,得到以下结果:

object is garbage collected
object is garbage collected

Shell

注意 :无论是最终确定还是垃圾收集都不能保证。

  • 23
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智慧浩海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值