System.gc()和Runtime.gc()和finalize()的联系

    首先,System.gc()和Runtime.gc()是没有任何区别的, 每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getruntime 方法获取当前运行时。
    在API中Runtime类的gc方法是这样写的:

    名称 gc 代表“垃圾回收器”。虚拟机根据需要在单独的线程中自动执行回收过程,甚至不用显式调用 gc 方法。
    方法 System.gc 是调用此方法的一种传统而便捷的方式。
 
    跟踪一下源码就可以发现调用System.gc()实际上就是调用Runtime.getRuntime().gc();
    
    他们都是用来提示JVM进行垃圾回收的,是由系统自动调用的,不需要人为调用,但是,是立即回收还是延迟回收是取决于JVM的,
finallize()定义在Object类中,在释放对象占用内存之前,会调用该方法,一般建议在该方法中释放对象所持有的资源.

猜你喜欢

转载自blog.csdn.net/iteen/article/details/80434849