科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道垃圾清理势在必行——java垃圾收集算法

垃圾清理势在必行——java垃圾收集算法

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象......

作者:zhangxinjie 来源:天极论坛整理 2007年10月12日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共4页)

4.gc与finalize方法

  ⑴gc方法请求垃圾回收

  使用System.gc()可以不管JVM使用的是哪一种垃圾回收的算法,都可以请求Java的垃圾回收。需要注意的是,调用System.gc()也仅仅是一个请求。JVM接受这个消息后,并不是立即做垃圾回收,而只是对几个垃圾回收算法做了加权,使垃圾回收操作容易发生,或提早发生,或回收较多而已。

  ⑵finalize方法透视垃圾收集器的运行

  在JVM垃圾收集器收集一个对象之前 ,一般要求程序调用适当的方法释放资源,但在没有明确释放资源的情况下,Java提供了缺省机制来终止化该对象释放资源,这个方法就是finalize()。它的原型为:

  protected void finalize() throws Throwable

  在finalize()方法返回之后,对象消失,垃圾收集开始执行。原型中的throws Throwable表示它可以抛出任何类型的异常。

  因此,当对象即将被销毁时,有时需要做一些善后工作。可以把这些操作写在finalize()方法里。

  

以下是引用片段:
protected void finalize()
  {
  // finalization code here
  }
  ⑶代码示例

  

以下是引用片段:
class Garbage
  {
  int index;
  static int count;
  Garbage()
  {
  count++;
  System.out.println("object "+count+" construct");
  setID(count);
  }
  void setID(int id)
  {
  index=id;
  }
  protected void finalize() //重写finalize方法
  {
  System.out.println("object "+index+" is reclaimed");
  }
  public static void main(String[] args)
  {
  new Garbage();
  new Garbage();
  new Garbage();
  new Garbage();
  System.gc(); //请求运行垃圾收集器
  }
  }

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章