3.1可見(jiàn)性 為了確保多個(gè)線(xiàn)程之間對(duì)內(nèi)存寫(xiě)入的可見(jiàn)性,就必須使用同步機(jī)制 在沒(méi)有同步的情況下,編譯器、處理器以及運(yùn)行時(shí)等都可能對(duì)操作的執(zhí)行順序進(jìn)行一些意想不到調(diào)整。在缺乏足夠...
3.1可見(jiàn)性 為了確保多個(gè)線(xiàn)程之間對(duì)內(nèi)存寫(xiě)入的可見(jiàn)性,就必須使用同步機(jī)制 在沒(méi)有同步的情況下,編譯器、處理器以及運(yùn)行時(shí)等都可能對(duì)操作的執(zhí)行順序進(jìn)行一些意想不到調(diào)整。在缺乏足夠...
要編寫(xiě)線(xiàn)程安全的代碼,核心在于對(duì)狀態(tài)訪(fǎng)問(wèn)操作進(jìn)行管理,特別是共享的(Shared)和可變的(Mutable)訪(fǎng)問(wèn) 對(duì)象的狀態(tài)指存儲(chǔ)在狀態(tài)變量(實(shí)例變量、靜態(tài)域)中的數(shù)據(jù),對(duì)象...
1.1并發(fā)簡(jiǎn)史 操作系統(tǒng)多進(jìn)程出現(xiàn)的原因 資源利用率:一個(gè)程序等待某個(gè)外部操作的時(shí)候運(yùn)行另一個(gè)程序 公平性:粗粒度的時(shí)間分片共享計(jì)算機(jī)資源 便利性:多個(gè)程序執(zhí)行多個(gè)任務(wù) 促使...
13.1概述 13.2線(xiàn)程安全 當(dāng)多個(gè)線(xiàn)程訪(fǎng)問(wèn)一個(gè)對(duì)象的時(shí),如果不用考慮這些線(xiàn)程在運(yùn)行時(shí)環(huán)境下的調(diào)度和交替執(zhí)行,也不需要進(jìn)行額外的同步,或者在調(diào)用方法進(jìn)行任何其他的協(xié)調(diào)操作,...
12.1概述 衡量一個(gè)服務(wù)端的好壞,每秒事物處理數(shù)(Transactions Per second,TPS)是最重要的指標(biāo)之一 12.2硬件的效率與一致性 基于高速緩存的存儲(chǔ)...
11.1概述 為了提高熱點(diǎn)代碼的運(yùn)行效率,在運(yùn)行時(shí),虛擬機(jī)會(huì)把這些代碼編譯成與本地平臺(tái)相關(guān)的機(jī)器碼,并進(jìn)行各種層次的優(yōu)化,完成這個(gè)任務(wù)的編譯器稱(chēng)為即時(shí)編譯器(Just In ...
10.1概述 Java語(yǔ)言的“編譯期”其實(shí)是個(gè)“不確定”的過(guò)程: 前端編譯器:把Java文件編譯成class文件,例如Sun的javac、Eclipse JDT中的增量編譯器...
9.1概述 在class文件格式和執(zhí)行引擎這部分內(nèi)容中,用戶(hù)程序能直接影響的并不多,Class文件以何種形式存儲(chǔ),類(lèi)型何時(shí)加載、如何連接,以及虛擬機(jī)如何執(zhí)行字節(jié)碼指令都由虛擬...
8.1概述 執(zhí)行引擎:輸入字節(jié)碼文件,處理過(guò)程是字節(jié)碼解析的等效過(guò)程,輸出的是執(zhí)行結(jié)果 8.2運(yùn)行時(shí)棧幀結(jié)構(gòu) 棧幀是虛擬機(jī)用于方法調(diào)用和方法執(zhí)行的數(shù)據(jù)結(jié)構(gòu),是虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)...
7.1概述 虛擬機(jī)把描述類(lèi)的數(shù)據(jù)從class文件加載到內(nèi)存,經(jīng)過(guò)校驗(yàn)、轉(zhuǎn)換解析、初始化,最形成能夠被虛擬機(jī)直接使用的java類(lèi)型,這就是虛擬機(jī)的加載過(guò)程 類(lèi)的加載、連接、初始...
6.1概述 計(jì)算機(jī)只能識(shí)別0和1 虛擬機(jī)以及建立在虛擬機(jī)上語(yǔ)言的出現(xiàn),使編寫(xiě)的程序編譯成二進(jìn)制本地機(jī)碼(native code)非唯一選擇,越來(lái)越多編程語(yǔ)言選擇了與操作系統(tǒng)和...
3.1概述 3.2對(duì)象已死嗎 3.2.1引用計(jì)數(shù)法 實(shí)現(xiàn)簡(jiǎn)單、判定效率高 無(wú)法解決循環(huán)引用的問(wèn)題 主流虛擬機(jī)沒(méi)有采用 3.2.2可達(dá)性分析算法 通過(guò)一系列稱(chēng)作“GC Root...
5.1概述 5.2案例分析 5.2.1高性能硬件上的程序部署 兩種方式 通過(guò)64位JDK使用大內(nèi)存 內(nèi)存回收導(dǎo)致長(zhǎng)時(shí)間停頓 現(xiàn)階段,64位JDK的性能結(jié)果普遍低于32位JDK...
4.1概述 定位問(wèn)題,知識(shí)、經(jīng)驗(yàn)是關(guān)鍵基礎(chǔ),數(shù)據(jù)是依據(jù),工具是運(yùn)用知識(shí)處理數(shù)據(jù)的手段 數(shù)據(jù)包含:運(yùn)行日志、異常堆棧、GC日志、線(xiàn)程快照(threaddump/javacore...
2.1概述 講解內(nèi)存各個(gè)區(qū)域的作用、服務(wù)對(duì)象以及其中可能產(chǎn)生的問(wèn)題 2.2運(yùn)行時(shí)數(shù)據(jù)區(qū) 2.2.1程序計(jì)數(shù)器 當(dāng)前線(xiàn)程所執(zhí)行的字節(jié)碼的行號(hào)顯示器 每個(gè)線(xiàn)程都有獨(dú)立的程序計(jì)數(shù)器...
介紹java技術(shù)體系的過(guò)去、現(xiàn)在、和未來(lái)的發(fā)展趨勢(shì);如何獨(dú)立的編譯一個(gè)OpenJDK7 1.1概述 java不僅僅是一種編程語(yǔ)言,還是一個(gè)由一系列計(jì)算機(jī)軟件和規(guī)范形成的技術(shù)體...