鍍金池/ 問(wèn)答/Java  Linux/ jvm工作內(nèi)存與主內(nèi)存

jvm工作內(nèi)存與主內(nèi)存

工作內(nèi)存中,存有方法棧幀,以及寄存器,pc,這可以理解,但是為啥要講引用的一些主內(nèi)存變量也要復(fù)制到工作內(nèi)存?我覺(jué)得完全沒(méi)必要啊,這反而導(dǎo)致了緩存一致性問(wèn)題啊。還是說(shuō)讀寫(xiě)主內(nèi)存有什么我不知道的大代價(jià)?(工作內(nèi)存與主內(nèi)村不是都在物理內(nèi)存里嗎,訪問(wèn)速度按理說(shuō)沒(méi)有太大區(qū)別啊,難道是因?yàn)閘ock的代價(jià)?或者說(shuō)對(duì)總線的競(jìng)爭(zhēng)?)

求各路大神解%%%

回答
編輯回答
清夢(mèng)

會(huì)由主內(nèi)存復(fù)制到工作內(nèi)存的變量主要有兩種。一種是顯式定義了局部變量的,例如在方法內(nèi)部XXX foo = this.bar;;另一種則是在多核或多CPU系統(tǒng)中,主內(nèi)存中的數(shù)據(jù)被讀入到了不同的高速緩存中。

前者實(shí)際上只對(duì)引用類型有影響,而后者則會(huì)影響所有被讀入變量的一致性。

2018年7月15日 20:24