在 java 中,您无法控制 GC ——由 VM 决定。我从没遇到过 System.gc()等于 需要的情况。因为一个 System.gc()调用只是建议 VM 执行一个垃圾收集,并且它也执行一个 FULL 垃圾收集(多代堆中的旧的和新的代) ,所以它实际上会导致 更多 CPU 周期被消耗而不必要。
在某些情况下,向 VM 建议立即进行完整的收集可能是有意义的,因为您可能知道应用程序将在接下来的几分钟内处于空闲状态,然后才会发生繁重的工作。例如,在应用程序启动期间初始化许多临时对象之后(例如,我刚缓存了一吨信息,我知道在一分钟左右的时间内不会有太多活动)。想象一下 Eclipse 启动这样的 IDE ——它进行了大量初始化工作,因此在初始化之后立即执行完整的 gc 是有意义的。