垃圾回收

垃圾回收

垃圾回收是Java中自动内存管理的另一种叫法。垃圾回收的目的是为程序保持尽可能多的可用堆(heap)。 JVM会删除堆上不再需要从堆引用的对象。

 

比方说,下面这个方法就会从函数调用。

void method(){
    Calendar calendar = new GregorianCalendar(2000,10,30); 
System.out.println(calendar); }

通过函数第一行代码中参考变量calendar,在堆上创建了GregorianCalendar类的一个对象。

 

函数结束执行后,引用变量calendar不再有效。因此,在方法中没有创建引用到对象。

JVM认识到这一点,会从堆中删除对象。这就是所谓的垃圾回收。

什么时候运行垃圾回收?

垃圾回收在JVM突发奇想和心血来潮时运行(没有那么糟糕)。运行垃圾收集的可能情况是:

  1. 堆可用内存不足

  2. CPU空闲

垃圾回收的最佳做法?

 

用编程的方式,我们可以要求(记住这只是一个请求——不是一个命令)JVM通过调用System.gc()方法来运行垃圾回收。

 

当内存已满,且堆上没有对象可用于垃圾回收时,JVM可能会抛出OutOfMemoryException。

 

对象在被垃圾回收从堆上删除之前,会运行finalize()方法。我们建议不要用finalize()方法写任何代码。

 

 

 

 

待续。。。

 

posted @ 2018-01-22 17:25 路迢迢 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值