【发布时间】:2019-03-08 08:13:54
【问题描述】:
我已经阅读了一些关于 Java 垃圾收集的内容,但我找不到在代码中处理垃圾收集的“最佳实践”。我应该在使用后将每个变量设置为null,还是只使用默认的垃圾收集器更高效、更高效?还是在这种情况下我必须通过命令行参数配置垃圾收集器?
感谢您的建议!
【问题讨论】:
-
不,你没有
-
你不应该自己处理任何这些。 Java 在幕后完成了所有这些工作。您可以专门在代码中添加对 GC 的调用,但它们只是运行 GC 的“请求”,它们不保证它会实际运行。您可以做的是确保当变量过时时,将它们标记为已准备好进行垃圾回收
-
最佳实践是让JVM来处理。不要管它。大多。将
null分配给变量几乎总是不必要的。运行 GC 几乎总是不可取的。即一个坏主意。仅当您有明确的证据表明 GC 表现不佳时,才建议调整 GC。 (不明智的 GC 调整可能会使 GC 性能比不理会它更差。) -
与所有优化一样:忘记它。避免愚蠢的算法(例如,冒泡排序),使用良好的数据结构(Java 本身有很多,在 Guava 和其他库中更多),用简短的方法编写干净的代码。尤其是 GC 应该按原样工作,对于 99% 的情况,最佳做法是不要管它,因为更有经验的人已经对其进行了调整。
标签: java performance garbage-collection jvm command-line-arguments