成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

升級到JDK9的一個BUG,你了解嗎

開發 開發工具
前幾天在一個群里看到一個朋友發了一個demo,說是JDK的bug,昨天在JVM的一個群里又有朋友發了,覺得挺有意思,分享給大家,希望大家升級JDK的版本的時候注意下是否存在這樣的代碼,如果存在記得立馬改過來。

概述

前幾天在一個群里看到一個朋友發了一個demo,說是JDK的bug,昨天在JVM的一個群里又有朋友發了,覺得挺有意思,分享給大家,希望大家升級JDK的版本的時候注意下是否存在這樣的代碼,如果存在記得立馬改過來。

輸出比較有意思,在JDK9以前,只輸出一個evaluated,但是JDK9以后的版本卻會輸出兩個evaluated,大家可以測試一下。

猜想

看到這個現象,大家都開始猜測了

首先,到底是編譯期問題還是運行時問題?這個好驗證,我們用JDK8編譯的class分別跑在JDK8和JDK10上,看是不是也有類似的現象。

其次,如果是編譯期問題,那到底差異在哪里,從結論看,用JDK10編譯的字節碼,test方法肯定能執行兩次。

大家驗證下來發現***種情況沒發生類似的問題了,那基本確定是第二種情況,那接下來簡單分析下。

簡單分析

驗證字節碼,我們都是通過javap去看的,javap -verbose JavacEvalBug,兩個版本下我們分別看到下面的字節碼

JDK8編譯的字節碼

其實基本相當于如下的邏輯

JDK10編譯的字節碼

粗看已經比較明了了,在JDK10編譯的字節碼里我們確實看到執行了兩次test方法,那就和結論比較匹配了。

這個Bug已經有人匯報給Oracle了,https://bugs.openjdk.java.net/browse/JDK-8204322,大家可以關注下進度,點擊原文可以進入BUG鏈接。

思維發散

上面其實都是涉及到了字符串拼接,JDK9以前用的是StringBuilder來拼接的,而JDK9開始使用了invokeDynamic指令,可以動態指定要調用的方法,而不是一開始就編譯好的,這個展開來講就比較長了,有興趣的可以網上找點資料了解一下,我有時間也可以專門寫篇相關的文章,只是感覺對這塊有比較大興趣或者有興趣一直讀下去的的估計不會太多。

改下Demo讓你再驚喜一下

如果上面的Demo改一下,把數組變成int數組

此時你再試試?

【本文是51CTO專欄作者李嘉鵬的原創文章,轉載請通過微信公眾號(你假笨,id:lovestblog)聯系作者本人獲取授權】

戳這里,看該作者更多好文

 

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2016-09-19 15:19:32

iOS10蘋果升級

2019-12-30 11:07:02

Https免費腳本

2025-01-03 08:29:53

2013-10-21 10:07:30

微軟Windows 8.1理由

2022-05-27 07:03:04

JDK場景線程

2013-08-20 09:59:25

Windows 8.1微軟操作系統

2017-12-06 16:28:59

JDK 9JDK 8開發者

2010-11-17 15:43:55

軟件測試Bug

2021-01-27 22:44:01

5G基站數據

2011-09-27 09:13:16

Ubuntu 11.0

2022-11-13 10:07:22

SpringSpringBoot

2021-03-08 21:47:25

Java字符串JDK9

2011-02-18 09:06:15

ChromeChrome DevLinux

2020-01-13 10:00:32

升級Windows 10Windows

2022-09-12 21:10:42

LinkerdKubernetes

2022-04-08 16:42:11

Stringchar[]byte[]

2023-11-20 08:09:11

Pulsar鑒權topic

2018-04-27 13:20:12

Java 8Java 9Java 10

2013-02-22 18:37:50

容錯服務器

2022-03-25 08:31:09

ReactReact 18升級
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天堂中文在线播放 | 欧美一区二区三区在线观看 | 亚洲福利网 | 国产视频中文字幕 | 久久99精品久久久久久 | 欧美簧片 | www.日本国产 | 精品熟人一区二区三区四区 | 中文字幕成人在线 | 91综合网| 久久精选| 天天操天天操 | 国产精品一区二区久久 | 欧美精品久久久久 | 黄色网址在线免费播放 | 国产欧美在线 | 成人精品一区亚洲午夜久久久 | 亚洲天堂中文字幕 | 成人精品国产一区二区4080 | 久久久久久毛片免费观看 | 精品在线免费观看视频 | 欧一区| 伊人网站在线 | 久久久久亚洲精品国产 | 激情综合五月 | 日本超碰| 国产精品视频二区三区 | av一区在线 | www.v888av.com| 亚洲精品一区二三区不卡 | 亚洲激情专区 | 欧美性a视频 | 99在线免费观看 | av在线播放一区二区 | 伊人爽| 成人午夜精品一区二区三区 | 亚洲精品久久区二区三区蜜桃臀 | 一级免费毛片 | 色伊人 | 精品国产91乱码一区二区三区 | 国内自拍第一页 |