終於有人把Java內存模型(JMM)說清楚了

 

網上有很多關於Java內存模型的文章,在《深入理解Java虛擬機》和《Java併發編程的藝術》等書中也都有關於這個知識點的介紹。但是,很多人讀完之後還是搞不清楚,甚至有的人說自己更懵了。本文,就來整體的介紹一下Java內存模型,目的很簡單,讓你讀完本文以後,就知道到底Java內存模型是什麼,爲什麼要有Java內存模型,Java內存模型解決了什麼問題等。

爲什麼要有內存模型

在介紹Java內存模型之前,先來看一下到底什麼是計算機內存模型,然後再來看Java內存模型在計算機內存模型的基礎上做了哪些事情。要說計算機的內存模型,就要說一下一段古老的歷史,看一下爲什麼要有內存模型。

內存模型,英文名Memory Model,他是一個很老的老古董了。他是與計算機硬件有關的一個概念。那麼我先給你介紹下他和硬件到底有啥關係。

CPU和緩存一致性

我們應該都知道,計算機在執行程序的時候,每條指令都是在CPU中執行的,而執行的時候,又免不了要和數據打交道。而計算機上面的數據,是存放在主存當中的,也就是計算機的物理內存啦。

剛開始,還相安無事的,但是隨着CPU技術的發展,CPU的執行速度越來越快。而由於內存的技術並沒有太大的變化,所以從內存中讀取和寫入數據的過程和CPU的執行速度比起來差距就會越來越大,這就導致CPU每次操作內存都要耗費很多等待時間。

這就像一家創業公司,剛開始,創始人和員工之間工作關係其樂融融,但是隨着創始人的能力和野心越來越大,逐漸和員工之間出現了差距,普通員工原來越跟不上CEO的腳步。老闆的每一個命令,傳到到基層員工之後,由於基層員工的理解能力、執行能力的欠缺,就會耗費很多時間。這也就無形中拖慢了整家公司的工作效率。

可是,不能因爲內存的讀寫速度慢,就不發展CPU技術了吧,總不能讓內存成爲計算機處理的瓶頸吧。

所以,人們想出來了一個好的辦法,就是在CPU和內存之間增加高速緩存。緩存的概念大家都知道,就是保存一份數據拷貝。他的特點是速度快,內存小,並且昂

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章