Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

System.gc() 与 Runtime.gc() 有什么作用?

查看完整题解

参考回答

直接回答

System.gc() 和 Runtime.getRuntime().gc() 都是在建议 JVM 尝试回收不再使用的对象。System.gc() 的作用等同于调用后者,但它们都不是“立即回收指定对象”的命令,也不能保证马上腾出多少内存或触发哪一种收集过程。

讲清原理

垃圾收集器需要结合当前堆状态和运行参数决定如何响应。显式 GC 请求可能被运行参数忽略,具体行为还会随收集器实现变化。因此,不能把“调用返回”理解为“所有不可达对象已经回收”。

在常规业务代码里频繁调用它,可能引入额外停顿或吞吐损失,并不等于优化。遇到内存问题,应先看是否存在被意外保留的引用、缓存是否失控,以及堆配置和对象分配模式。

例子与易错点

System.gc();
Runtime.getRuntime().gc();

这两行表达的是同类请求,不需要连续调用来“加强效果”。局部变量设为 null 只是移除一条引用;文件、连接仍应显式关闭,不能等 GC 代替资源管理。

相关题:第 2 题、第 6 题、第 52 题。

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。