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

正文內(nèi)容

android內(nèi)存管理了解(編輯修改稿)

2025-02-10 06:30 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 ME和 ASHMEM_SET_SIZE設(shè)置共享內(nèi)存塊的名字和大小,并將得到的 handle傳給 mmap,來(lái)獲得共享的內(nèi)存區(qū)域,進(jìn)程 B通過(guò)將相同的 handle傳給 mmap,獲得同一塊內(nèi)存, handle在進(jìn)程間的傳遞可通過(guò) Binder來(lái)實(shí)現(xiàn)。 Pmem相關(guān)介紹 基本原理 Android Pmem是為了實(shí)現(xiàn)共享大尺寸連續(xù)物理內(nèi)存而開(kāi)發(fā)的一種機(jī)制,該機(jī)制對(duì) dsp, gpu等部件非常有用。Pmem相當(dāng)于把系統(tǒng)內(nèi)存劃分出一部分單獨(dú)管理,即不被linux mm管理,實(shí)際上 linux mm根本看不到這段內(nèi)存。 Pmem與 Ashmem的區(qū)別 Pmem和 Ashmem都通過(guò) mmap來(lái)實(shí)現(xiàn)共享內(nèi)存,其區(qū)別在于 Pmem的共享區(qū)域是一段連續(xù)的物理內(nèi)存,而Ashmem的共享區(qū)域在虛擬空間是連續(xù)的,物理內(nèi)存卻不一定連續(xù)。 dsp和某些設(shè)備只能工作在連續(xù)的物理內(nèi)存上,這樣 cpu與 dsp之間的通信就需要通過(guò) Pmem來(lái)實(shí)現(xiàn)。 Pmem的實(shí)現(xiàn) Pmem的源代碼在 drivers/misc/, Pmem驅(qū)動(dòng)依賴于linux的 misc device和 platform driver框架,一個(gè)系統(tǒng)可以有多個(gè)Pmem,默認(rèn)的是最多 10個(gè)。 Pmem暴露 4組操作,分別是 platform driver的 probe和 remove操作; misc device的 fops接口和 vm_ops操作。模塊初始化時(shí)會(huì)注冊(cè)一個(gè) platform driver,在之后 probe時(shí),創(chuàng)建 misc設(shè)備文件,分配內(nèi)存,完成初始化工作。 Pmem通過(guò) pmem_info, pmem_data, pmem_region三個(gè)結(jié)構(gòu)體維護(hù)分配的共享內(nèi)存,其中 pmem_info代表一個(gè) Pmem設(shè)備分配的內(nèi)存塊, pmem_data代表該內(nèi)存塊的一個(gè)子塊, pmem_region則把每個(gè)子塊分成多個(gè)區(qū)域。 pmem_data是分配的基本單位,即每次應(yīng)用層要分配一塊 Pmem內(nèi)存,就會(huì)有一個(gè) pmem_data來(lái)表示這個(gè)被分配的內(nèi)存塊,實(shí)際上在 open的時(shí)候,并不是 open一個(gè) pmem_info表示的整個(gè) Pmem內(nèi)存塊,而是創(chuàng)建一個(gè) pmem_data以備使用。一個(gè)應(yīng)用可以通過(guò) ioctl來(lái)分配 pmem_data中的一個(gè)區(qū)域,并可以把它 map到進(jìn)程空間;并不一定每次都要分配和 map整個(gè) pmem_data內(nèi)存塊。 dalvik虛擬機(jī)內(nèi)存管理 android模式 linux模式 dalvik虛擬機(jī)內(nèi)存管理 內(nèi)存管理的核心就是兩個(gè)部分:分配內(nèi)存和回收內(nèi)存。Java語(yǔ)言使用 new操作符來(lái)分配內(nèi)存,但是與 C/C++等語(yǔ)言不同的是, Java語(yǔ)言并沒(méi)有提供任何操作來(lái)釋放內(nèi)存,而是通過(guò)一種叫做垃圾收集的機(jī)制來(lái)回收內(nèi)存。對(duì)于內(nèi)存管理的實(shí)現(xiàn),我們通過(guò)三個(gè)方面來(lái)加以分析:內(nèi)存分配,內(nèi)存回收和內(nèi)存管理調(diào)試。 對(duì)象布局 所有的對(duì)象都有一個(gè)相同的頭部 clazz和 lock。 ( 1) clazz:clazz指向該對(duì)象的類對(duì)象,類對(duì)象用來(lái)描述該對(duì)象所屬的類,這樣可以很容易的從一個(gè)對(duì)象獲取該對(duì)象所屬的類的具體信息。 ( 2) lock:是一個(gè)無(wú)符號(hào)整數(shù),用以實(shí)現(xiàn)對(duì)象的同步。 ( 3) data:存放對(duì)象數(shù)據(jù),根據(jù)對(duì)象的不同數(shù)據(jù)區(qū)的大小是不同的。 內(nèi)存管理的主要操作之一是為 Java對(duì)象分配內(nèi)存, Java對(duì)象在虛擬機(jī)中的內(nèi)存布局如下: 堆 堆是 dalvik虛擬機(jī)從操作系統(tǒng)分配的一塊連續(xù)的虛擬內(nèi)存。 heapBase是堆的起始地址, heapLimit是堆的最大地址,堆大小的最大值可以通過(guò) Xmx選項(xiàng)或。在原生系統(tǒng)中,一般 32M,在 MIUI中我們將其設(shè)為64M。 在 dalvik虛擬機(jī)實(shí)現(xiàn)中,是通過(guò)底層的 bionicC庫(kù)的malloc/free操作來(lái)分配 /釋放內(nèi)存的。 bionicC庫(kù)的malloc/free操作是基于 DougLea的實(shí)現(xiàn) (dlmalloc) 堆內(nèi)存位圖 在虛擬機(jī)中維護(hù)了兩個(gè)對(duì)應(yīng)
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1