JVM內(nèi)存模型是指JVM運(yùn)行時(shí)對(duì)內(nèi)存所進(jìn)行的邏輯分布,即JVM如何使用計(jì)算機(jī)內(nèi)存。JVM內(nèi)存模型分為線程私有的棧內(nèi)存和堆內(nèi)存以及線程共享的方法區(qū)。可以理解為Java程序在運(yùn)行時(shí),JVM將內(nèi)存分為不同的區(qū)域,每個(gè)區(qū)域存儲(chǔ)不同的數(shù)據(jù)類型。
Java內(nèi)存模型是指Java程序執(zhí)行時(shí),線程之間如何進(jìn)行內(nèi)存交互的一種約定。Java內(nèi)存模型規(guī)定了Java程序中所有線程共享的內(nèi)存區(qū)域,即堆內(nèi)存和方法區(qū)內(nèi)存訪問的準(zhǔn)確方式。Java內(nèi)存模型使用內(nèi)存屏障技術(shù)來保證并發(fā)線程訪問內(nèi)存的正確性,例如volatile關(guān)鍵字、synchronized關(guān)鍵字和Lock同步鎖等。
JVM內(nèi)存模型和Java內(nèi)存模型都是為了解決多線程程序共享內(nèi)存時(shí)產(chǎn)生的安全和可見性問題,但兩者并不相同。JVM內(nèi)存模型主要是為了與操作系統(tǒng)進(jìn)行內(nèi)存管理交互,保證Java程序可靠運(yùn)行;而Java內(nèi)存模型則是為了保證Java程序多線程并發(fā)執(zhí)行時(shí)內(nèi)存共享的可見性和一致性。