Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中分配的内存是否保留在下面的代码中 for(int i=0;i_Java_Memory_Garbage Collection - Fatal编程技术网

java中分配的内存是否保留在下面的代码中 for(int i=0;i

java中分配的内存是否保留在下面的代码中 for(int i=0;i,java,memory,garbage-collection,Java,Memory,Garbage Collection,ls是for循环中的一个局部变量。这意味着一旦迭代完成,它就可以被垃圾回收,并且确实被标记为垃圾回收。 JVM是否决定收集它是一个完全不同的问题,取决于JVM的实现。它可能受到传递给java的参数的影响(例如,-Xms,-Xmx或臭名昭著的-XX:参数),但不能严格控制。如果您无法访问ls,它怎么会留在那里?@SSpoke这部分是正确的。内存空间是由JVM分配的。我没有考虑任何可能导致整个问题的潜在优化。但内存不会立即回收。GC将在任何时候运行需要。我面临着一个内存不足的问题,不管它是由这些事情

ls
for
循环中的一个局部变量。这意味着一旦迭代完成,它就可以被垃圾回收,并且确实被标记为垃圾回收。
JVM是否决定收集它是一个完全不同的问题,取决于JVM的实现。它可能受到传递给java的参数的影响(例如,
-Xms
-Xmx
或臭名昭著的
-XX:
参数),但不能严格控制。

如果您无法访问
ls
,它怎么会留在那里?@SSpoke这部分是正确的。内存空间是由JVM分配的。我没有考虑任何可能导致整个问题的潜在优化。但内存不会立即回收。GC将在任何时候运行需要。我面临着一个内存不足的问题,不管它是由这些事情引起的,还是为了大量的数据?使用Java分析工具来找出它发生的地方,当我建议人们使用
System.gc()时,我通常会被否决;
但它可能会有所帮助。这个问题似乎离题了,因为它缺少足够的信息来诊断问题。
    for(int i=0; i<100; i++){
    List<Integer> ls =new ArrayList<Integer>();
    ls.add(1);
}