小编d.j*_*own的帖子

Java 10:针对增强的循环的字节代码生成

以下示例描述了在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

java javac

9
推荐指数
1
解决办法
336
查看次数

标签 统计

java ×1

javac ×1