gc和finalize的区别是什么啊?什么时候用他们?急!!!

解决方案 »

  1.   

    System.gc()强制系统进行垃圾收集,一般不需要调用
    finalize()是Object的一个方法,系统进行垃圾收集时会调用该方法
    一般用于释放类中操作系统的资源,如文件句柄或数据库连接
      

  2.   

    System.gc()是请求JVM进行垃圾收集
    finalize是类中的方法,可以在类中覆盖该方法.该方法会在该类的对象被回收以前首先调用。
      

  3.   

    你在程序中调用System.gc()的话,是要虚拟机执行垃圾回收,但不意味着马上回收垃圾,VM中有一个算法,当他感觉内存紧张时采取回收,你若在程序中覆盖了finalize()方法,会执行他,
    System.runFinalizersOnExit()会马上看到效果
      

  4.   

    在类的finalize里写个System.out.println("dssd");
    new一个对象不引用它
    然后System.gc()
      

  5.   

    《java编程思想 》里头有这个
      

  6.   

    finalize方法就是这个对象被当做垃圾收集之前,运行的一个方法
    一般来说,这个方法是不会被运行的,除非你显示的将一个对象制造出来,但是没有给它分配引用,然后你再调用System.gc()的方法,这样才能看到调用这个对象finalize()方法的效果
      

  7.   

    知道有这些方法就行了,没有必要去研究,他们已经属于JVM原理内容了,在开发中基本没有意义,如果你的对象还在被其他的对象引用,就算你调用几次垃圾收集方法,也不会被JVM处理的