jdk 10.0.2 bug修复

之前记录过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了。顺便,附图一张,jdk近年来更新节奏大提速,从下图看,10.0.2这个版本到2018-12-16 就过期了(即:又得升级)

oracle官网mac上jdk 10.0.2的下载地址

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android群英传

NDK Maping 发布啦

1062
来自专栏xingoo, 一个梦想做发明家的程序员

日志那点事儿——slf4j源码剖析

前言: 说到日志,大多人都没空去研究,顶多知道用logger.info或者warn打打消息。那么commons-logging,slf4j,logback...

2525
来自专栏世界第一语言是java

网站调用支付宝进行支付-Java后台调用支付宝支付

6723
来自专栏Android随笔

JNI错误收集

找不到openTest这个Native方法导致的错误,so库里面的方法路径、方法名称都是固定的,java里面如果不对应就会导致这个错误,可以通过查看your.s...

731
来自专栏坚毅的PHP

[node.js]开放平台接口调用测试

遇到的问题:Node.js JSON parsing error,syntax error unexpect end of input 测试代码 //测试/st...

4216
来自专栏cmazxiaoma的架构师之路

IDEA入门(1)--lombok和Junit generator2插件的运用

2023
来自专栏LinkedBear的个人空间

浅析RPC与WebService

虽然现在非常火的RPC技术以SpringCloud和Dubbo(x)为主流,但是如果做接口调用,还是逃不了要用一些较传统的技术。前几天在做接口调用时恰巧用到了W...

2741
来自专栏Java成神之路

Java之网络编程笔记

  IP地址:用于标记一台计算机的身份证。 IP地址由网络地址(确定网络)和主机地址(网络中的主机)组成。

932
来自专栏技术墨客

Spring核心——全局事件管理 原

ApplicationContext是一个Context策略(见上下文与IoC),他除了提供最基础的IoC容器功能,还提供了MessageSource实现的国际...

1912
来自专栏java初学

II 3.1 连接到服务器

42311

扫码关注云+社区

领取腾讯云代金券