java中value是什么意思 Java源程序如何變成Java字節(jié)碼?
Java源程序如何變成Java字節(jié)碼?默認(rèn)情況下,編譯器會(huì)將java文件轉(zhuǎn)換為字節(jié)碼,以便計(jì)算機(jī)能夠理解它,并手動(dòng)使用CMD javacxxxx.java文件編譯器volatile是為了防止指令重新排
Java源程序如何變成Java字節(jié)碼?
默認(rèn)情況下,編譯器會(huì)將java文件轉(zhuǎn)換為字節(jié)碼,以便計(jì)算機(jī)能夠理解它,并手動(dòng)使用CMD javacxxxx.java文件編譯器
volatile是為了防止指令重新排序以確??梢娦?/p>
對(duì)于JVM級(jí)別,它是為了防止編譯器重新排序
同時(shí),對(duì)于某些CPU,它們會(huì)通過cache lock或thread解決cache可見性問題
但是目前很多cpu都進(jìn)行了優(yōu)化,因?yàn)閏ache一致性MESI會(huì)帶來性能開銷,所以采用storebuffer機(jī)制進(jìn)行異步處理,這種機(jī)制會(huì)導(dǎo)致指令的無序執(zhí)行。這會(huì)導(dǎo)致可見性問題。
然后volatile將在CPU級(jí)別增加內(nèi)存屏障,以解決由CPU無序執(zhí)行引起的可見性問題