System.gc() 与 Runtime.gc() 有什么作用?
先说出你的答案
定义边界、关键机制、一个反例;P8题再补容量、失败与验证。
查看完整题解
参考回答
直接回答
System.gc() 和 Runtime.getRuntime().gc() 都是在建议 JVM 尝试回收不再使用的对象。System.gc() 的作用等同于调用后者,但它们都不是“立即回收指定对象”的命令,也不能保证马上腾出多少内存或触发哪一种收集过程。
讲清原理
垃圾收集器需要结合当前堆状态和运行参数决定如何响应。显式 GC 请求可能被运行参数忽略,具体行为还会随收集器实现变化。因此,不能把“调用返回”理解为“所有不可达对象已经回收”。
在常规业务代码里频繁调用它,可能引入额外停顿或吞吐损失,并不等于优化。遇到内存问题,应先看是否存在被意外保留的引用、缓存是否失控,以及堆配置和对象分配模式。
例子与易错点
System.gc();
Runtime.getRuntime().gc();
这两行表达的是同类请求,不需要连续调用来“加强效果”。局部变量设为 null 只是移除一条引用;文件、连接仍应显式关闭,不能等 GC 代替资源管理。
相关题:第 2 题、第 6 题、第 52 题。
和评分标准对照,你能独立回答到哪一步?
自评会安排下一次复习,不保存你的口述内容。
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。