欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

什么是偽共享

這篇文章主要介紹“什么是偽共享”,在日常操作中,相信很多人在什么是偽共享問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”什么是偽共享”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括黃山區(qū)網(wǎng)站建設(shè)、黃山區(qū)網(wǎng)站制作、黃山區(qū)網(wǎng)頁(yè)制作以及黃山區(qū)網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,黃山區(qū)網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到黃山區(qū)省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

什么是偽共享

首先大家都知道,隨著CPU和內(nèi)存的發(fā)展速度差異的問(wèn)題,導(dǎo)致CPU的速度遠(yuǎn)遠(yuǎn)快于內(nèi)存,所以一般現(xiàn)在的CPU都加入了高速緩存,就是常說(shuō)的解決不同硬件之間的性能差異問(wèn)題。

這樣的話,很簡(jiǎn)單的道理,加入了緩存,就必然會(huì)導(dǎo)致緩存一致性的問(wèn)題,由此,又引入了緩存一致性協(xié)議。(如果你不知道,建議去百度一下,這里不做展開(kāi))

CPU緩存,顧名思義,越貼近CPU的緩存速度越快,容量越小,造價(jià)成本也越高,而高速緩存一般可以分為L(zhǎng)1、L2、L3三級(jí)緩存,按照性能的劃分:L1>L2>L3。

什么是偽共享

而事實(shí)上,數(shù)據(jù)在緩存內(nèi)部都是按照行來(lái)存儲(chǔ)的,這就叫做緩存行。緩存行一般都是2的整數(shù)冪個(gè)字節(jié),一般來(lái)說(shuō)范圍在32-256個(gè)字節(jié)之間,現(xiàn)在最為常見(jiàn)的緩存行的大小在64個(gè)字節(jié)。

所以,按照這個(gè)存儲(chǔ)方式,緩存中的數(shù)據(jù)并不是一個(gè)個(gè)單獨(dú)的變量的存儲(chǔ)方式,而是多個(gè)變量會(huì)放到一行中。

我們常說(shuō)的一個(gè)例子就是數(shù)組和鏈表,數(shù)組的內(nèi)存地址是連續(xù)的,當(dāng)我們?nèi)プx取數(shù)組中的元素時(shí),CPU會(huì)把數(shù)組中后續(xù)的若干個(gè)元素也加載到緩存中,以此提高效率,但是鏈表則不會(huì),也就是說(shuō),內(nèi)存地址連續(xù)的變量才有可能被放到一個(gè)緩存行中。

在多個(gè)線程并發(fā)修改一個(gè)緩存行中的多個(gè)變量時(shí),由于只能同時(shí)有一個(gè)線程去操作緩存行,將會(huì)導(dǎo)致性能的下降,這個(gè)問(wèn)題就稱之為偽共享。

為什么只有一個(gè)線程能去操作?我們舉個(gè)實(shí)際的栗子來(lái)說(shuō)明這種情況:

假設(shè)緩存中有x,y兩個(gè)變量,他們同時(shí)已經(jīng)在不同的三級(jí)緩存之中。

這時(shí)有兩個(gè)線程A和B同時(shí)去修改位于Core1和Core2的變量x和y。

如果線程A去修改Core1的緩存中的x變量,由于緩存一致性協(xié)議,Core2中對(duì)應(yīng)的緩存了x變量的緩存行將會(huì)失效,他會(huì)被強(qiáng)制從主內(nèi)存中重新去加載變量。

這樣的話,頻繁的訪問(wèn)主內(nèi)存,緩存基本都失效了,將會(huì)導(dǎo)致性能的下降,這就是偽共享的問(wèn)題。

什么是偽共享

如何避免?

既然已經(jīng)知道了什么是偽共享,那么怎么避免這種情況的發(fā)生?

改變行存儲(chǔ)的方式?想都別想了。

剩下可行的方法就是填充,如果這一行只有我這一個(gè)數(shù)據(jù)那不就好了嗎?

確實(shí)就是這樣,解決方式通常有以下兩種。

字節(jié)填充

在JDK8之前,可以通過(guò)填充字節(jié)的方式來(lái)避免偽共享的問(wèn)題,如下代碼所示:

什么是偽共享

自定義填充

一般而言,緩存行有64字節(jié),我們知道一個(gè)long是8個(gè)字節(jié),填充5個(gè)long之后,一共就是48個(gè)字節(jié)。

而 Java 中對(duì)象頭在32位系統(tǒng)下占用8個(gè)字節(jié),64位系統(tǒng)下占用16個(gè)字節(jié),這樣填充5個(gè)long型即可填滿64字節(jié),也就是一個(gè)緩存行。

@Contented注解

JDK8以及之后的版本 Java 提供了sun.misc.Contended 注解,通過(guò)@Contented注解就可以解決偽共享的問(wèn)題。

什么是偽共享

注解方式

使用@Contented注解后會(huì)增加128字節(jié)的padding,并且需要開(kāi)啟-XX:-RestrictContended選項(xiàng)后才能生效。

所以,通過(guò)以上兩種方式你會(huì)發(fā)現(xiàn),對(duì)象頭大小和緩存行的大小都和操作系統(tǒng)位數(shù)有關(guān),JDK的注解幫你解決了這個(gè)問(wèn)題,所以推薦盡量使用注解的方式來(lái)實(shí)現(xiàn)。

雖然解決了偽共享問(wèn)題,但是這種填充的方式也浪費(fèi)了緩存資源,明明只有8B的大小,硬是使用了64B緩存空間,造成了緩存資源的浪費(fèi)。

而且我們知道,緩存又小又貴,時(shí)間和空間的取舍要自己酌情考慮。

實(shí)際應(yīng)用

在Java中提供了多個(gè)原子變量的操作類,就是比如AtomicLong、AtomicInteger這些,通過(guò)CAS的方式去更新變量,但是失敗會(huì)無(wú)限自旋嘗試,導(dǎo)致CPU資源的浪費(fèi)。

為了解決高并發(fā)下的這個(gè)缺點(diǎn),JDK8中新增了LongAdder類,他的使用就是對(duì)解決偽共享的實(shí)際應(yīng)用。

LongAdder繼承自Striped64,內(nèi)部維護(hù)了一個(gè)Cell數(shù)組,核心思想就是把單個(gè)變量的競(jìng)爭(zhēng)拆分,多線程下如果一個(gè)Cell競(jìng)爭(zhēng)失敗,轉(zhuǎn)而去其他Cell再次CAS重試。

什么是偽共享

Striped64成員變量

解決偽共享的真正的核心就在Cell數(shù)組,可以看到,Cell數(shù)組使用了Contented注解。

在上面我們提到數(shù)組的內(nèi)存地址都是連續(xù)的,所以數(shù)組內(nèi)的元素經(jīng)常會(huì)被放入一個(gè)緩存行,這樣的話就會(huì)帶來(lái)偽共享的問(wèn)題,影響性能。

這里使用Contented進(jìn)行填充,就避免了偽共享的問(wèn)題,使得數(shù)組中的元素不再共享一個(gè)緩存行。

什么是偽共享

到此,關(guān)于“什么是偽共享”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

當(dāng)前名稱:什么是偽共享
網(wǎng)站網(wǎng)址:http://www.aaarwkj.com/article2/gjddoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、網(wǎng)站排名、營(yíng)銷型網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)手機(jī)網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
久久精品久久久精品| 日本在线免费成人高清| 久久青草视频在线观看| 日韩精品国产专区一区| 国产精品熟女亚洲av| 91综合午夜精品福利| 亚洲中文永久免费视频| 91精品手机在线观看| 日本人的黄色录像视频| 久久综合久中文字幕青草| 成人一区二区三区观看| 日韩少妇人妻一区二区| 日本在线观看免费高清| 亚洲成人久久久av一区| 中文乱幕亚洲无套内射| 日韩精品一区二区三区欲色av| 国产一区二区传媒视频| 精品日韩电影在线观看| 四虎官网免费在线观看| 久久精品久久久精品| 十八禁在线观看点击进入| 日韩中文不卡人成在线视频| 黑人精品一区二区三区| 国产精品伦理一区二区三区| 黄片在线免费观看欧美中文| 欧美色精品人妻在线最新| 一卡二卡精品在线免费| 免费观看黄片视频在线观看| 欧美一区二区三区中文字幕| 两性色午夜视频在线观看| 午夜精品久久福利视频| 人人妻人人澡人人爽人人dvd| 日韩av裸体在线播放| av黄色成人在线观看| 欧美αv一区二区三区| 天天操夜夜操夜夜操精品| 色偷偷亚洲精品一区二区| 国产三级黄在线观看| 亚洲精品第一国产综合| 黄色av一本二本在线观看| 末满18周岁禁止观看|