freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

android內(nèi)存管理了解-資料下載頁

2025-01-14 06:30本頁面
  

【正文】 eobjects),因此我們只能標(biāo)記出活動對象,這樣所有未被標(biāo)記的對象就是可以回收的垃圾 根集合 (RootSet) 當(dāng)進(jìn)行垃圾收集時,需要停止 dalvik虛擬機(jī)的運(yùn)行(當(dāng)然,除了垃圾收集之外)。因此垃圾收集又被稱作 STW( stoptheworld,整個世界因我而停止)。 dalvik虛擬機(jī)在運(yùn)行過程中要維護(hù)一些狀態(tài)信息,這些信息包括:每個線程所保存的寄存器, Java類中的靜態(tài)字段,局部和全局的 JNI引用, JVM中的所有函數(shù)調(diào)用會對應(yīng)一個相應(yīng) C的棧幀。每一個棧幀里可能包含對對象的引用,比如包含對象引用的局部變量和參數(shù)。 所有這些引用信息被加入到一個集合中,叫根集合。然后從根集合開始,遞歸的查找可以從根集合出發(fā)訪問的對象。因此, Mark過程又被成為追蹤,追蹤所有可被訪問的對象。如下圖所示,假定從根集合 {a}開始,我們可以訪問的對象集合為 {a,b, c, d},這樣就追蹤出所有可被訪問的對象集合。 ( KB) 標(biāo)記棧 (MarkStack) 垃圾收集使用棧來保存根集合,然后對棧中的每一個元素,遞歸追蹤所有可訪問的對象,對于所有可訪問的對象,在 markBits位圖中該將對象的內(nèi)存起始地址對應(yīng)的位設(shè)為 1。這樣當(dāng)棧為空時, markBits位圖就是所有可訪問的對象集合。 Concurrent Mark(并發(fā)標(biāo)記 ) 為了運(yùn)行垃圾收集,需要停止虛擬機(jī)的運(yùn)行,這可能會導(dǎo)致程序比較長時間的停頓。垃圾收集的主要工作位于Mark階段,為了縮短停頓時間, dalvik虛擬機(jī)使用了concurrentmark技術(shù)。 Concurrentmark引入一個單獨(dú)的 gc線程,由該線程去跟蹤自己的根集合中所有可訪問的對象,同時所有其它的線程也在運(yùn)行。這也是 concurrent一詞的含義,但是為了回收內(nèi)存,即運(yùn)行 Sweep階段,必需停止虛擬機(jī)的運(yùn)行。這會導(dǎo)入一個問題,即在 gc線程 mark對象的時候,其它線程的運(yùn)行又引入了新的訪問對象。因此在 Sweep階段,又重新運(yùn)行 mark階段,但是在這個階段對于已經(jīng) mark的對象可以不用繼續(xù)遞歸追蹤了。這樣從一定程度上降低了程序停頓時間。 Sweep 垃圾收集的第二步就是回收內(nèi)存,在 Mark階段通過 markBits位圖我們可以得到所有可訪問的對象集合,而 liveBits位圖表示所有已經(jīng)分配的對象集合。因此通過比較這兩個位圖,liveBits位圖和 markBits位圖的差異就是所有可回收的對象集合。 Sweep階段調(diào)用 free來釋放這些內(nèi)存給堆。 HAL介紹 Android HAL 架構(gòu)規(guī)劃 : HAL 的目的是為了把 Android framework 與 Linux kernel 完整「隔開」 HAL描述 HAL 的過去 HAL 的現(xiàn)實(shí)狀況 過去的 libhardware_legacy 作法,比較是傳統(tǒng)的「 module」方式,也就是將 *.so 檔案當(dāng)做透過直接函數(shù)呼叫的方式,來操作驅(qū)動程序。 當(dāng)然,應(yīng)用程序也可以不需要透過 JNI 的方式進(jìn)行,直接以加載 *.so 檔( dlopen)的做法呼叫 *.so 里的符號( symbol)也是一種方式。 「 shared library」來使用,在 runtime( JNI 部份)以 direct function call 使用 HAL module。 現(xiàn)在的 libhardware 作法,就有「 stub」的味道了。HAL stub 是一種代理人( proxy)的概念, stub 雖然仍是以 *.so 檔的形式存在,但 HAL 已經(jīng)將 *.so 檔隱藏起來了。 Stub 向 HAL「提供」操作函數(shù)( operations),而 runtime 則是向 HAL 取得特定模塊( stub)的 operations,再 callback 這些操作函數(shù)。這種以 indirect function call 的實(shí)作架構(gòu),讓 HAL stub 變成是一種「包含」關(guān)系,即 HAL 里包含了許許多多的 stub(代理人)。 Runtime 只要說明「類型」,即 module ID,就可以取得操作函數(shù)。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1