System.gc()的理解 显式触发Full GC【代码证明】

本文探讨了System.gc()方法在Java中的作用,它默认尝试触发Full GC,但并不保证执行。Java内存管理允许JVM自行决定GC行为。System.gc()与Runtime.getRuntime().gc()等效,而System.runFinalization()则强制执行未引用对象的finalize()方法。通过实验展示了System.gc()调用不一定导致Full GC的情况。
摘要由CSDN通过智能技术生成

System.gc()的理解

1、在默认情况下,通过System. gc()或者Runtime . getRuntime() .gc()的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。(System. gc()的底层就是Runtime . getRuntime() .gc() )

2、然而System. gc()调用附带一个免责声明,无法保证对垃圾收集器的调用。也就是说调用System. gc() JVM不一定会去Full GC,GC与否还是JVM说了算,这也算Java内存自动管理机制的一个特点了。

3、JVM实现者可以通过System. gc() 调用来决定JVM的GC行为。而一般情况下,垃圾回收应该是自动进行的,无须手动触发,否则就太过于麻烦了。在一些特殊情况下,如我们正在编写一个性能基准,我们可以在运行之间调用System.gc()。

4、System. gc()只是提醒JVM的垃圾回收器执行Full GC,但是不确定是否马上执行。System. gc()与Runtime . getRuntime().gc()的作用一样。

而System. runFinalization()方法:就是强制调用失去引用的对象的finalize()方法

5、空口无凭,直接演示一下,为了证明System.gc()的调用不一样会Full GC,我试了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值