解析System.gc()和Runtime.gc()区别

其实对于这个问题,完全可以通过jdk的API说明文档来给出答案。

首先给出Runtime.gc()方法在API说明文档中的介绍:


gc
public void gc()
运行垃圾回收器。调用此方法意味着 Java 虚拟机做了一些努力来回收未用对象,以便能够快速地重用这些对象当前占用的内存。当控制从方法调用中返回时,虚拟机已经尽最大努力回收了所有丢弃的对象。

名称 gc 代表“垃圾回收器”。虚拟机根据需要在单独的线程中自动执行回收过程,甚至不用显式调用 gc 方法。

方法 System.gc() 是调用此方法的一种传统而便捷的方式。



看到加粗的部分,大家就明白了,其实System.gc()就是通过调用Runtime.gc()来完成的。

如果非要找出点区别的话,那还得再看看System.gc()  在文档中的说明部分,如下:


gc
public static void gc()
运行垃圾回收器。

调用 gc 方法暗示着 Java 虚拟机做了一些努力来回收未用对象,以便能够快速地重用这些对象当前占用的内存。当控制权从方法调用中返回时,虚拟机已经尽最大努力从所有丢弃的对象中回收了空间。

调用 System.gc() 实际上等效于调用:

 Runtime.getRuntime().gc()
 
另请参见:
Runtime.gc()

如果仔细对比,就会发现System.gc()是个静态方法,也就是说调用System.gc()方法,可以直接调用。而通过Runtime.gc()方法调用时,必须先通过getRuntime方法来得到Runtime实例,然后再调用gc方法,由此可见API说明文档中“ 方法 System.gc() 是调用此方法的一种传统而便捷的方式 ”的说法还是很准确的”。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值