java中gc()与finalize()

本文探讨了Java中System.gc()与finalize()方法的关系,通过实例演示了System.gc()调用时机的不确定性及如何立即执行finalize()方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有人会说:这个简单,直接调用System.gc()或者Runtime.getRuntime().gc();就可以了 。那我想说System.gc()到底什么时候调用finalize()呢?下面的列子会说明:

这个列子的运行结果是报了:

Exception in thread "main" Java.lang.NullPointerException
    at day09.Finalize.main(Finalize.java:19)
make: *** [main] 错误 1

为什么呢?

1.这个说明了gc()调用finalize()方法的时间是不确定的,虽然gc()是强制回收但是也只是通知系统尽快去处理。

这个例子只是在System.gc()后让他睡1秒,可是结果是能打映出"info.......",这个说明了什么呢?

1.这个说明,调用System.gc()后系统会很快的去处理finalize()方法,而不会出现程序运行结束还没处理


那么怎么能让系统立马去处理finalize()方法呢?

在system.gc()后调用System.runFinalization();方法可以立马区执行finalize()方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值