jdk 10.0.2 bug修复

简介: 之前记录过jdk9+版本的1个bug,某些情况下会导致方法执行二遍,今天早上打开笔记本(mac),弹出一个框提示jdk升级10.0.2,顺手点了一下,然后验证了下该bug,发现居然fix掉了,推荐大家升级! 还是这段代码: public class JavacEvalBug{ ...

之前记录过jdk9+版本的1个bug,某些情况下会导致方法执行二遍,今天早上打开笔记本(mac),弹出一个框提示jdk升级10.0.2,顺手点了一下,然后验证了下该bug,发现居然fix掉了,推荐大家升级!

还是这段代码:

public class JavacEvalBug{
 
    private static String[] array = {""};
 
    static int test(){
        System.out.println("evaluated!");
        return 0;
    }
 
    public static void main(String[] args) {
        array[test()] += "a";
    }
 
}  

编译运行后,只输出了一次evaluated!,用工具查看字节码:

javap -verbose JavacEvalBug 

(注:jdk 10.0.2 在mac上的安装路径为 /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home)

输出如下(仅截取了片段):

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
         0: getstatic     #5                  // Field array:[Ljava/lang/String;
         3: invokestatic  #6                  // Method test:()I
         6: dup2
         7: aaload
         8: invokedynamic #7,  0              // InvokeDynamic #0:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String;
        13: aastore
        14: return
      LineNumberTable:
        line 11: 0
        line 12: 14  

  test:() I 这里只调用了1次,这回可以放心使用jdk 10了。

作者: 菩提树下的杨过
出处: http://yjmyzz.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
目录
相关文章
|
2月前
|
缓存 安全 Java
JDK8线程池BUG引发的思考
JDK8线程池BUG引发的思考
120 0
|
2月前
|
Java Maven
[Java ] jdk升级 bug java: -source 8 中不支持 instanceof 中的模式匹配 (请使用 -source 16 或更高版本以启用 instanceof 中的模式匹配)
[Java ] jdk升级 bug java: -source 8 中不支持 instanceof 中的模式匹配 (请使用 -source 16 或更高版本以启用 instanceof 中的模式匹配)
259 0
|
8月前
|
Arthas NoSQL Java
JDK11现存性能bug(JDK-8221393)深度解析(1)
作为一名工程师,面对上面的现象,你会怎么做? 我想你的第一反应肯定是业务代码有问题?是不是有什么地方导致内存泄露? 是不是业务代码里有什么地方加载的数据太多,越来越慢?…… 同事尝试过dump堆里的内容,dump jstak线程…… 都没看出来什么异常,也优化了业务代码里之前一些不合理的逻辑,始终没有解决问题。 当时的问题是他们都没有往热点代码的方向排查,主要是因为他们不知道有啥好用的工具。
101 0
|
8月前
|
Java 开发者
JDK11现存性能bug(JDK-8221394)深度解析(2)
当然这个bug的本质就是jdk11+zgc+StackWalker的bug,三者都是bug触发的必要条件,如果你能避免其中一条就可以完美避开这个bug了,比如升级到jdk12+,比如不用zgc……
110 0
|
消息中间件 存储 Arthas
MQ-消息堆积-JDK Bug导致线程阻塞案例分析
一个JDK BUG导致系统LOAD高的案例分析
167 0
|
缓存 安全 Java
JDK8线程池BUG引发的思考
这里先说明一下这篇文章的相关知识点直接进行一个总结,如果读者对于相关内容十分熟悉的话这里也不浪费各位的时间,可以直接关闭本文了(哈哈)
104 0
|
Ubuntu Java
上报的关于JDK dpi/resolution错误的BUG已正式确认
上报的关于JDK dpi/resolution错误的BUG已正式确认
57 0
太极限了,JDK的这个BUG都能被我踩到
之前遇到个文件监听变更的问题,刚好这周末有空研究了一番,整理出来分享给大家。 从一次故障说起 我们还是从故障说起,这样更加贴近实际,也能让大家更快速理解背景。 有一个下发配置的服务,这个配置服务的实现有点特殊,服务端下发配置到各个服务的本地文件,当然中间经过了一个agent,如果没有agent也就无法写本地文件,然后由client端的程序监听这个配置文件,一旦文件有变更,就重新加载配置,画个架构图大概是这样:
|
Arthas 缓存 Kubernetes
JFR定位由于可能的JDK11的bug导致Log4j2 CPU占用100%的问题
JFR定位由于可能的JDK11的bug导致Log4j2 CPU占用100%的问题
JFR定位由于可能的JDK11的bug导致Log4j2 CPU占用100%的问题
|
安全 Java 程序员
JDK8线程池BUG引发的思考(下)
JDK8线程池BUG引发的思考(下)
218 0