以下示例描述了生成以下代码行的过程,直到Java 9。
在Java 10中,迭代器变量在for循环外声明,并在操作结束后立即初始化为null值,因此GC可以清除未使用的内存。
明确设置引用为空怎么比引用在for循环结束时超出范围更好呢?
来源:https://dzone.com/articles/features-in-java-10 另外,评论中添加链接:https://bugs.openjdk.java.net/browse/JDK-8192858
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()) {}
}
在Java 10中,迭代器变量在for循环外声明,并在操作结束后立即初始化为null值,因此GC可以清除未使用的内存。
{
Iterator iterator = data.iterator();
for (; iterator.hasNext();)
{
String b = (String)iterator.next();
}
b = null;
iterator = null;
}
明确设置引用为空怎么比引用在for循环结束时超出范围更好呢?
来源:https://dzone.com/articles/features-in-java-10 另外,评论中添加链接:https://bugs.openjdk.java.net/browse/JDK-8192858