日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
升級(jí)到JDK9的一個(gè)BUG,你了解嗎

概述

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),永平企業(yè)網(wǎng)站建設(shè),永平品牌網(wǎng)站建設(shè),網(wǎng)站定制,永平網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,永平網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

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

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

猜想

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

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

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

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

簡(jiǎn)單分析

驗(yàn)證字節(jié)碼,我們都是通過(guò)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來(lái)拼接的,而JDK9開(kāi)始使用了invokeDynamic指令,可以動(dòng)態(tài)指定要調(diào)用的方法,而不是一開(kāi)始就編譯好的,這個(gè)展開(kāi)來(lái)講就比較長(zhǎng)了,有興趣的可以網(wǎng)上找點(diǎn)資料了解一下,我有時(shí)間也可以專(zhuān)門(mén)寫(xiě)篇相關(guān)的文章,只是感覺(jué)對(duì)這塊有比較大興趣或者有興趣一直讀下去的的估計(jì)不會(huì)太多。

改下Demo讓你再驚喜一下

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

此時(shí)你再試試?

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


網(wǎng)站欄目:升級(jí)到JDK9的一個(gè)BUG,你了解嗎
文章網(wǎng)址:http://m.5511xx.com/article/dhpdihd.html