垃圾收集是否保证程序不会耗尽内存?

gir*_*iri 8 java

我听说java最优雅的属性是垃圾收集我想知道它能保证一个程序不会耗尽内存吗?

Ken*_*Ken 22

不,你总是可以尝试分配比可用内存更多的内存.

自动垃圾收集仅意味着自动收集垃圾(即未引用的存储器)(即,回收用于进一步使用).如果你继续引用它,它不是垃圾,也不是收集的.


Ada*_*ski 11

不,它不能保证这一点.程序员完全有可能错误地创建永远不会超出范围的对象,从而消耗越来越多的内存,直到所有堆都耗尽为止.

程序员有责任确保应用程序不再引用不再使用的对象.这样垃圾收集器就可以完成它的工作并回收这些对象使用的内存.

public class Main {
  public static void main(String[] main) {
    List<String> l = new LinkedList<String>();

    // Enter infinite loop which will add a String to
    // the list: l on each iteration.
    do {
      l.add(new String("Hello, World"));
    } while(true);
  }
}
Run Code Online (Sandbox Code Playgroud)