以下示例描述了在Java 9之前生成以下代码行.
List data = new ArrayList<>();for (String b : data);
public class Test
{
public Test() {}
public static void main(String[] paramArrayOfString) throws IOException {
ArrayList localArrayList = new ArrayList();
String str;
for (Iterator localIterator = localArrayList.iterator(); localIterator.hasNext(); str = (String)localIterator.next()) {}
}
Run Code Online (Sandbox Code Playgroud)
在Java 10中,迭代器变量在for循环外部声明,并在操作结束后立即初始化为null值,因此GC可以清除未使用的内存.
{
Iterator iterator = data.iterator();
for (; iterator.hasNext();)
{
String b = (String)iterator.next();
}
b = null;
iterator = null;
}
Run Code Online (Sandbox Code Playgroud)
在for循环结束时,如何设置引用null明显优于引用超出范围.
资料来源:https://dzone.com/articles/features-in-java-10
此外,从评论中添加链接:https://bugs.openjdk.java.net/browse/JDK-8192858