3.1可見性 為了確保多個線程之間對內(nèi)存寫入的可見性,就必須使用同步機制 在沒有同步的情況下,編譯器、處理器以及運行時等都可能對操作的執(zhí)行順序進行一些意想不到調(diào)整。在缺乏足夠...

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