一些預備知識

轉(zhuǎn)載請注明原文出處,謝謝!

接下我將總結(jié)一下垃圾收集的東西,首先補充一下基礎知識。

? ? 可能之前大家已經(jīng)接觸過收集器了,這里將會對收集器的一些基礎知識進行描述。

? ? GC算法我的上一篇已經(jīng)有過描述了,這里將會講解一些硬件上東西,處理器和線程,內(nèi)存和cache的一些東西。

接下來我們,看一下下圖是至強cpu的一張圖,cache這個東西大多數(shù)時候都是被我們忽略了。

至強CPU的部分參數(shù)

處理器

Linux使用了Ring3級別運行用戶態(tài),Ring0作為內(nèi)核態(tài),沒有使用Ring1和Ring2。Ring3狀態(tài)不能訪問Ring0的地址空間,包括代碼和數(shù)據(jù)。



線程是單一順序控制流(按照代碼順序執(zhí)行),線程有三個狀態(tài),執(zhí)行,就緒,準備。

引入線程的操作系統(tǒng)中,把線程作為調(diào)度和分派的基本單位,線程是獨立運行的基本單位。

調(diào)度器是操作系統(tǒng)的組件,是為了確定,任意時刻哪些線程在哪些處理器上運行。

既然上面都貼圖了,可以看到10核20線程,這個技術叫做超線程,指多個邏輯處理器公用一條指令流水線。調(diào)度器運行線程和處理器間有一定的親和性。(當然空閑核心怎么竊取其他的核心上的線程這個我還不知道,希望知道的大牛給予回復)

分時操作系統(tǒng)是把CPU的時間劃分成長短基本相同的時間區(qū)間,即"時間片",通過操作系統(tǒng)的管理,把這些時間片依次輪流地分配給各個用戶使用.如果某個作業(yè)在時間片結(jié)束之前,整個任務還沒有完成,那么該作業(yè)就被暫停下來,放棄CPU,等待下一輪循環(huán)再繼續(xù)做.此時CPU又分配給另一個作業(yè)去使用。

內(nèi)存

物理內(nèi)存可能是跨越多個內(nèi)存單元和處理器的,不過從垃圾收集器的角度來看,共享內(nèi)存看起來就是一塊由字或者字節(jié)組成的單個地址空間。

這里順帶提一下JVM的內(nèi)存模型,JVM線程間通信有兩種方式,一種是基于消息的,一種是共享內(nèi)存。jvm是基于共享內(nèi)存實現(xiàn)的。

高速緩存

相對于cpu的計算速度來說,內(nèi)存的速度的確非常慢的,現(xiàn)在的處理器和內(nèi)出間通常會架設一到多層高速緩存,每一層間的速度當然不一樣,這玩意貴弄不了太大?,F(xiàn)代處理器大多為多級處理器,至強這款,就為三級處理器。cache命中后能提高交互速度。 ??深入了解搓這里。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容