Java中system.gc()的重要性

13 浏览
0 Comments

Java中system.gc()的重要性

我知道在Java中垃圾回收是自动的。但是我理解,如果在代码中调用System.gc(),JVM可能会决定在那一点执行垃圾回收也可能不执行。这是如何精确地工作的?当JVM看到System.gc()时,它根据什么基础/参数来决定是否执行GC(或不执行)?

是否有任何案例在这种情况下把它放进你的代码里是一个好主意?

admin 更改状态以发布 2023年5月20日
0
0 Comments

我唯一能想到的情况,即使在搜索可能的内存泄漏时调用 System.gc()(垃圾回收)才有意义。我相信性能分析器在拍摄内存快照之前会调用此方法。

0
0 Comments

实际上,它通常决定执行垃圾回收。答案取决于许多因素,例如你正在运行哪个JVM、它处于哪种模式以及它正在使用哪种垃圾回收算法。

我不建议在你的代码中依赖它。如果JVM即将抛出OutOfMemoryError,调用System.gc()并不会停止它,因为垃圾收集器将尝试在进行极端操作之前尽可能释放更多内存。我只在IDE中见过它被使用,它被附加到用户可单击的按钮上,但即使在那里,它的使用也不是特别有用。

0