调用System.gc()在所有用户定义的方法中,这是一个好的实践吗?
调用System.gc()在所有用户定义的方法中,这是一个好的实践吗?
在所有的Java方法中调用System.gc()
是一个好的实践吗?
例如:我有一个类。在所有函数的返回语句之前,我尝试调用System.gc()
函数。这样做正确吗?
admin 更改状态以发布 2023年5月25日
在应用程序代码中调用System.gc()
是一个不好的主意。经常调用它是一个可怕的主意。
运行垃圾回收是一个相对昂贵的操作,特别是当它在不必要运行时运行时。而应用程序很少有可用的信息来知道何时需要运行它。
Java运行时更好地掌握了何时以及如何高效地运行垃圾回收器。请让它自己做出这个决定。
参考:
例子:我有一个类。在所有的函数返回语句之前,我试图调用System.gc()函数。这样做对吗?
绝对不行。
1 - 在生产代码中有一两个边缘情况下,调用System.gc()是有道理的。然而,这只是个小例外。
不需要调用 System.gc()
,因为垃圾回收是自动的,JVM知道它在做什么。
就像manouti所说,这个方法只是一个建议。曾经可能通过多次调用 System.gc()
来“强制”运行GC,但总的来说,不用担心垃圾收集器的问题。
如果你需要影响GC的工作方式,可以通过提供命令行参数来选择不同的收集算法,并调整参数,如此处所述。