我已经阅读了一些有关Java垃圾收集的知识,但是我找不到在代码中处理垃圾收集的“最佳实践”。使用后应该将每个变量设置为null
还是仅使用默认的垃圾收集器更有效,更高效?还是在这种情况下必须通过命令行参数配置垃圾收集器?
感谢您的建议!
答案 0 :(得分:6)
不,JVM为您做到了。这就是为什么它是具有自动内存管理功能的语言。如果需要,由于性能问题,可以致电:
Runtime r = Runtime.getRuntime();
r.gc();
但不能保证垃圾收集器会删除未引用的对象。这是对JVM的建议。 只有您知道自己在做什么。后果自负。
您可以做的是选择一个适合您需求的垃圾收集器实现。例如,如果您不想回收任何内存,出于测试目的,您可以通过添加XX:+UseEpsilonGC
标志来选择epsilon。
答案 1 :(得分:2)
垃圾收集器主要自己完成这项工作。您不需要任何东西。但是您甚至可以看到垃圾收集器清除了JVM内存,如图所示
自动垃圾收集是查看堆内存,识别正在使用和未使用的对象以及删除未使用的对象的过程。