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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
目录
相关文章
|
4月前
|
Java Maven
[Java ] jdk升级 bug java: -source 8 中不支持 instanceof 中的模式匹配 (请使用 -source 16 或更高版本以启用 instanceof 中的模式匹配)
[Java ] jdk升级 bug java: -source 8 中不支持 instanceof 中的模式匹配 (请使用 -source 16 或更高版本以启用 instanceof 中的模式匹配)
127 0
|
Ubuntu Java
上报的关于JDK dpi/resolution错误的BUG已正式确认
上报的关于JDK dpi/resolution错误的BUG已正式确认
47 0
太极限了,JDK的这个BUG都能被我踩到
之前遇到个文件监听变更的问题,刚好这周末有空研究了一番,整理出来分享给大家。 从一次故障说起 我们还是从故障说起,这样更加贴近实际,也能让大家更快速理解背景。 有一个下发配置的服务,这个配置服务的实现有点特殊,服务端下发配置到各个服务的本地文件,当然中间经过了一个agent,如果没有agent也就无法写本地文件,然后由client端的程序监听这个配置文件,一旦文件有变更,就重新加载配置,画个架构图大概是这样:
|
Oracle Java 关系型数据库
Eclipse解决bug:JDK是8.0,打不开eclipse
Eclipse解决bug:JDK是8.0,打不开eclipse
276 0
Eclipse解决bug:JDK是8.0,打不开eclipse
|
缓存 Java 编译器
可能出现jdk版本的bug和eclipse修改项目jdk的版本具体步骤
可能出现jdk版本的bug和eclipse修改项目jdk的版本具体步骤
145 0
可能出现jdk版本的bug和eclipse修改项目jdk的版本具体步骤
|
Java 程序员
我的程序跑了60多小时,就是为了让你看一眼JDK的BUG导致的内存泄漏。 (3)
我的程序跑了60多小时,就是为了让你看一眼JDK的BUG导致的内存泄漏。 (3)
99 0
|
监控 数据可视化 Java
我的程序跑了60多小时,就是为了让你看一眼JDK的BUG导致的内存泄漏。 (2)
我的程序跑了60多小时,就是为了让你看一眼JDK的BUG导致的内存泄漏。 (2)
78 0
|
监控 数据可视化 Java
我的程序跑了60多小时,就是为了让你看一眼JDK的BUG导致的内存泄漏。 (1)
我的程序跑了60多小时,就是为了让你看一眼JDK的BUG导致的内存泄漏。 (1)
102 0
|
Java 应用服务中间件 容器
Tomcat是如何修正JDK原生线程池bug的?
为提高处理能力和并发度,Web容器一般会把处理请求的任务放到线程池,而JDK的原生线程池先天适合CPU密集型任务,于是Tomcat改造之。
115 0
Tomcat是如何修正JDK原生线程池bug的?
|
Java 容器
JDK又在写Bug!告诉你为何Java NIO的ByteBuffer这么垃圾!(下)
JDK又在写Bug!告诉你为何Java NIO的ByteBuffer这么垃圾!
128 0
JDK又在写Bug!告诉你为何Java NIO的ByteBuffer这么垃圾!(下)