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

升級(jí)到JDK9的一個(gè)BUG,你了解嗎

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

概述

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

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

猜想

看到這個(gè)現(xiàn)象,大家都開始猜測了

首先,到底是編譯期問題還是運(yùn)行時(shí)問題?這個(gè)好驗(yàn)證,我們用JDK8編譯的class分別跑在JDK8和JDK10上,看是不是也有類似的現(xiàn)象。

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

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

簡單分析

驗(yàn)證字節(jié)碼,我們都是通過javap去看的,javap -verbose JavacEvalBug,兩個(gè)版本下我們分別看到下面的字節(jié)碼

JDK8編譯的字節(jié)碼

其實(shí)基本相當(dāng)于如下的邏輯

JDK10編譯的字節(jié)碼

粗看已經(jīng)比較明了了,在JDK10編譯的字節(jié)碼里我們確實(shí)看到執(zhí)行了兩次test方法,那就和結(jié)論比較匹配了。

這個(gè)Bug已經(jīng)有人匯報(bào)給Oracle了,https://bugs.openjdk.java.net/browse/JDK-8204322,大家可以關(guān)注下進(jìn)度,點(diǎn)擊原文可以進(jìn)入BUG鏈接。

思維發(fā)散

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

改下Demo讓你再驚喜一下

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

此時(shí)你再試試?

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

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

 

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2016-09-19 15:19:32

iOS10蘋果升級(jí)

2019-12-30 11:07:02

Https免費(fèi)腳本

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微軟操作系統(tǒng)

2017-12-06 16:28:59

JDK 9JDK 8開發(fā)者

2010-11-17 15:43:55

軟件測試Bug

2021-01-27 22:44:01

5G基站數(shù)據(jù)

2022-04-08 16:42:11

Stringchar[]byte[]

2022-11-13 10:07:22

SpringSpringBoot

2011-09-27 09:13:16

Ubuntu 11.0

2011-02-18 09:06:15

ChromeChrome DevLinux

2020-01-13 10:00:32

升級(jí)Windows 10Windows

2021-03-08 21:47:25

Java字符串JDK9

2022-09-12 21:10:42

LinkerdKubernetes

2023-11-20 08:09:11

Pulsar鑒權(quán)topic

2018-04-27 13:20:12

Java 8Java 9Java 10

2013-02-22 18:37:50

容錯(cuò)服務(wù)器

2013-08-23 11:03:28

Windows 8.1
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日本色婷婷| 欧美伊人久久久久久久久影院 | 国产精品一区二区在线 | 91精品国产91久久久久久最新 | 午夜tv免费观看 | 99视频在线免费观看 | 欧美精品在线免费观看 | 日韩av电影院 | 亚洲精品一区二区三区中文字幕 | 精品欧美色视频网站在线观看 | 国产精品久久久久久久久久久久冷 | 久久国产一区二区 | 欧美日韩一区二区视频在线观看 | 日韩一区二区三区四区五区六区 | 精品欧美二区 | 日韩中文在线视频 | 亚洲一区在线日韩在线深爱 | 在线视频日韩 | 黄色一级电影在线观看 | 日韩精品一区二区不卡 | 久久久久久国产 | 欧美日韩第一页 | 国产精品一区二区三区免费观看 | 青青久在线视频 | 黑人巨大精品欧美黑白配亚洲 | www亚洲免费国内精品 | 福利精品在线观看 | 久久久.com | 91精品久久久久久久久 | 免费观看的av毛片的网站 | 午夜视频在线观看一区二区 | 四虎影音| 亚洲在线电影 | www.色综合| 一区二区三区四区不卡视频 | 中文字幕日韩欧美一区二区三区 | 欧美日韩精品国产 | 中文字幕 在线观看 | 免费的av | 国产精品一区二区三区久久 | 毛片大全 |