Java程序员知道JVM运行垃圾回收器,而System.gc()只是建议JVM运行垃圾回收器。如果我们使用System.gc(),并不一定会立即运行GC。
如果我误解了Java的垃圾收集器,请纠正我。
除了依赖Java的Garbage Collector之外,还有其他方法可以进行内存管理吗? 如果您打算通过某种有助于管理内存的编程实践来回答问题,请这样做。
关于Java内存管理,要记住的最重要的事情是“无效化”您的引用。
仅未引用的对象将被垃圾回收。
例如,以下代码中的对象永远不会被收集,并且您的内存将满,而无所事事。
List objs = new ArrayList(); for (int i = 0; i < Integer.MAX_VALUE; i++) objs.add(new Object());
但是,如果您不引用那些对象,则可以无限循环,而不会出现内存问题。
List objs = new ArrayList(); for (int i = 0; i < Integer.MAX_VALUE; i++) new Object();
因此,无论您做什么,都要确保删除对不再使用的对象的引用(将引用设置为null或清除集合)。
null
垃圾收集器何时运行,最好由JVM决定。好吧,除非您的程序即将开始执行占用大量内存且对速度至关重要的事情,所以您可能建议JVM在进入之前运行GC,因为您可能会收集垃圾并继续使用额外的内存。否则,我个人认为没有理由参加竞选System.gc()。
System.gc()
希望对您有所帮助。