1. 類(lèi)文件結(jié)構(gòu) 根據(jù)jvm規(guī)范,類(lèi)文件結(jié)構(gòu)如下: 1.1 魔數(shù) 0~3 字節(jié),表示它是否是 class 類(lèi)型的文件 0000000 ca fe ba be 00 00 00...
Binder驅(qū)動(dòng)情景分析 路徑: 1. 啟動(dòng) service manager 1.1 概述 (內(nèi)核中,第一次調(diào)用binder_ioctl(),會(huì)創(chuàng)建一個(gè)binder_thre...
1. 概述 代碼路徑 1.1 架構(gòu)介紹: 消息機(jī)制主要包含: Message:消息分為硬件產(chǎn)生的消息(如按鈕、觸摸)和軟件生成的消息; MessageQueue:消息隊(duì)列的主...
Java虛擬機(jī)在執(zhí)行java程序的過(guò)程中會(huì)把它所管理的內(nèi)存化分為若干個(gè)不同的數(shù)據(jù)區(qū)域。這些區(qū)域有各自的用途,以及創(chuàng)建和銷(xiāo)毀的時(shí)間。有些區(qū)域隨之虛擬機(jī)進(jìn)程的啟動(dòng)而一直存在,有些...
1. 如何判斷對(duì)象可以回收? 1.1 引用計(jì)數(shù)法 算法:在對(duì)象中添加一個(gè)引用計(jì)數(shù)器,每當(dāng)有一個(gè)地方引用它時(shí),計(jì)數(shù)器值加一;引用失效時(shí),計(jì)數(shù)器值減一。計(jì)數(shù)器為0 的對(duì)象時(shí)不被使...
* 同步模式之兩階段終止(Two Phase Termination) 在一個(gè)線程 t1 如何優(yōu)雅結(jié)束線程 t2 ? 優(yōu)雅的意思是:給線程t2 一個(gè)料理后事的機(jī)會(huì) 錯(cuò)誤思路 ...
為什么說(shuō)頻繁的創(chuàng)建和銷(xiāo)毀線程會(huì)浪費(fèi)大量的系統(tǒng)資源? 線程的創(chuàng)建需要開(kāi)辟虛擬機(jī)棧、本地方法棧、程序計(jì)數(shù)器等線程私有的內(nèi)存空間。在線程銷(xiāo)毀時(shí)需要回收這些系統(tǒng)資源。頻繁的創(chuàng)建和銷(xiāo)毀...
1. CountDownLatch 1.1 說(shuō)明 一種同步輔助工具,允許一個(gè)或多個(gè)線程等待其他線程執(zhí)行的一組操作完成。 給定一個(gè)計(jì)數(shù)值。當(dāng)每個(gè)線程完成后,調(diào)用{@link c...
1 AQS原理 全稱是 AbstractQueuedSynchronizer ,阻塞式鎖和相關(guān)同步工具的框架 1.1 特點(diǎn) 用state屬性來(lái)表示資源的狀態(tài)(分獨(dú)占模式和共享...
前言 保護(hù)共享資源--加鎖實(shí)現(xiàn) 執(zhí)行結(jié)果:0 cost : 333ms 保護(hù)共享資源--無(wú)鎖實(shí)現(xiàn) 可以看到使用原子類(lèi)的效率更高執(zhí)行結(jié)果:0 cost : 341ms0 cos...
Monitor 主要關(guān)注的是訪問(wèn)共享變量時(shí),保證臨界區(qū)代碼的原子性。 1. java 內(nèi)存模型 JMM即Java Memory Model ,它定義了主存、 工作內(nèi)存的抽象概...
1. 一個(gè)例子 一間大屋子有兩個(gè)功能:睡覺(jué) 學(xué)習(xí) ,互不干涉現(xiàn)在小男要學(xué)習(xí),小女要睡覺(jué),但如果只用一間屋子(一個(gè)對(duì)象鎖)的話,那么并發(fā)度很低。解決方法是準(zhǔn)備多個(gè)房間(多個(gè)對(duì)像...
wait notify 原理 Owner線程發(fā)現(xiàn)條件不滿足,調(diào)用wait方法,即可進(jìn)入WaitSet 變?yōu)閃AITING狀態(tài) BLOCKED 和WAITING 的線程都處于阻...