新聞中心
Ashmem

創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)提供鐘樓企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、H5開(kāi)發(fā)、小程序制作等業(yè)務(wù)。10年已為鐘樓眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
java.lang.Object
|---ohos.utils.Ashmem
public class Ashmem
extends Object
提供與匿名共享內(nèi)存(Ashmem)相關(guān)的方法,包括創(chuàng)建、關(guān)閉、映射和取消映射Ashmem,從Ashmem讀取數(shù)據(jù)和向Ashmem寫(xiě)入數(shù)據(jù),獲取Ashmem大小,為Ashmem設(shè)置保護(hù)。
Ashmem 是由一個(gè)進(jìn)程創(chuàng)建的。 您可以將創(chuàng)建的 Ashmem 對(duì)象映射到當(dāng)前進(jìn)程以讀取和寫(xiě)入數(shù)據(jù)。 或者,您可以將此 Ashmem 對(duì)象傳輸并映射到另一個(gè)進(jìn)程以進(jìn)行數(shù)據(jù)讀取和寫(xiě)入。 您需要確保多個(gè)進(jìn)程之間并發(fā)讀寫(xiě)操作的時(shí)序。
字段摘要
| 修飾符和類(lèi)型 | 字段 | 描述 |
|---|---|---|
| static int | PROT_EXEC | 表示可以執(zhí)行 Ashmem 對(duì)象中的數(shù)據(jù)。 |
| static int | PROT_NONE | 表示 Ashmem 對(duì)象中的數(shù)據(jù)無(wú)法讀取、寫(xiě)入或執(zhí)行。 |
| static int | PROT_READ | 表示可以讀取 Ashmem 對(duì)象中的數(shù)據(jù)。 |
| static int | PROT_WRITE | 表示可以寫(xiě)入 Ashmem 對(duì)象中的數(shù)據(jù)。 |
構(gòu)造函數(shù)摘要
| 構(gòu)造函數(shù) | 描述 |
|---|---|
| Ashmem(long nativeObject) |
方法總結(jié)
| 修飾符和類(lèi)型 | 方法 | 描述 |
|---|---|---|
| void | closeAshmem() | 關(guān)閉此 Ashmem。 |
| static Ashmem | createAshmem(String name, int size) | 根據(jù)指定的調(diào)試名稱(chēng)和內(nèi)存大小創(chuàng)建 Ashmem 對(duì)象。 |
| static Ashmem | createAshmemFromExisting(long unwrappedNativeObject) | 通過(guò)復(fù)制現(xiàn)有的 Ashmem 對(duì)象來(lái)創(chuàng)建 Ashmem 對(duì)象。 |
| protected void | finalize() | 當(dāng)垃圾收集確定不再有對(duì)該對(duì)象的引用時(shí),由對(duì)象上的垃圾收集器調(diào)用。 |
| long | getAshmemIdentity() | 獲取 Ashmem 對(duì)象的身份。 |
| int | getAShmemSize() | 獲取 Ashmem 對(duì)象的內(nèi)存大小。 |
| boolean | mapAshmem(int mapType) | 使用指定的映射類(lèi)型將 Ashmem 對(duì)象映射到此進(jìn)程。 |
| boolean | mapReadAndWriteAShmem() | 在 Ashmem 對(duì)象和此進(jìn)程之間創(chuàng)建讀/寫(xiě)映射。 |
| boolean | mapReadOnlyAShmem() | 在 Ashmem 對(duì)象和此進(jìn)程之間創(chuàng)建只讀映射。 |
| byte[] | readFromAShmem(int size, int offset) | 從 Ashmem 對(duì)象中讀取數(shù)據(jù)。 |
| boolean | setProtection(int protectionType) | 設(shè)置 Ashmem 對(duì)象的保護(hù)類(lèi)型。 |
| void | unmapAShmem() | 從此進(jìn)程中取消映射 Ashmem 對(duì)象。 |
| boolean | writeToAShmem(byte[] data, int size, int offset) | 將數(shù)據(jù)寫(xiě)入 Ashmem 對(duì)象。 |
| 從類(lèi) java.lang.Object 繼承的方法 |
|---|
| clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段詳細(xì)信息
PROT_EXEC
public static final int PROT_EXEC
表示可以執(zhí)行 Ashmem 對(duì)象中的數(shù)據(jù)。
它可用于設(shè)置 Ashmem 對(duì)象的保護(hù)或映射類(lèi)型。
PROT_NONE
public static final int PROT_NONE
表示 Ashmem 對(duì)象中的數(shù)據(jù)無(wú)法讀取、寫(xiě)入或執(zhí)行。
它可用于設(shè)置 Ashmem 對(duì)象的保護(hù)或映射類(lèi)型。
PROT_READ
public static final int PROT_READ
表示可以讀取 Ashmem 對(duì)象中的數(shù)據(jù)。
它可用于設(shè)置 Ashmem 對(duì)象的保護(hù)或映射類(lèi)型。
PROT_WRITE
public static final int PROT_WRITE
表示可以寫(xiě)入 Ashmem 對(duì)象中的數(shù)據(jù)。
它可用于設(shè)置 Ashmem 對(duì)象的保護(hù)或映射類(lèi)型。
構(gòu)造函數(shù)詳細(xì)信息
Ashmem
public Ashmem(long nativeObject)
方法詳情
createAshmem
public static Ashmem createAshmem(String name, int size)
根據(jù)指定的調(diào)試名稱(chēng)和內(nèi)存大小創(chuàng)建 Ashmem 對(duì)象。
調(diào)試名稱(chēng)僅用于在檢查已映射到此 Ashmem 的進(jìn)程的內(nèi)存映射時(shí)查詢(xún)有關(guān)此 Ashmem 的信息。
參數(shù):
| 參數(shù)名稱(chēng) | 參數(shù)描述 |
|---|---|
| name | 調(diào)試名稱(chēng),方便查詢(xún)Ashmem信息。 |
| size | 指示 Ashmem 的大小。 |
返回:
返回創(chuàng)建的 Ashmem 對(duì)象; 如果創(chuàng)建失敗則返回 null。
createAshmemFromExisting
public static Ashmem createAshmemFromExisting(long unwrappedNativeObject)
通過(guò)復(fù)制現(xiàn)有的 Ashmem 對(duì)象來(lái)創(chuàng)建 Ashmem 對(duì)象。
兩個(gè) Ashmem 對(duì)象指向同一個(gè)共享內(nèi)存區(qū)域。
參數(shù):
| 參數(shù)名稱(chēng) | 參數(shù)描述 |
|---|---|
| unwrappedNativeObject | 表示現(xiàn)有 Ashmem 對(duì)象的 ID。 您可以使用 getAshmemIdentity() 方法獲取 ID。 |
返回:
返回創(chuàng)建的 Ashmem 對(duì)象。
finalize
protected void finalize() throws Throwable
從類(lèi)復(fù)制的描述:對(duì)象
當(dāng)垃圾收集確定不再有對(duì)該對(duì)象的引用時(shí),由對(duì)象上的垃圾收集器調(diào)用。子類(lèi)覆蓋 finalize 方法以釋放系統(tǒng)資源或執(zhí)行其他清理。
finalize 的一般約定是,當(dāng) Java? 虛擬機(jī)確定不再有任何方法可以讓任何尚未終止的線(xiàn)程訪(fǎng)問(wèn)該對(duì)象時(shí)調(diào)用它,除非是由于某個(gè)操作而導(dǎo)致的。由準(zhǔn)備完成的其他對(duì)象或類(lèi)的完成所采取。 finalize 方法可以采取任何行動(dòng),包括使該對(duì)象再次可供其他線(xiàn)程使用;然而,finalize 的通常目的是在對(duì)象被不可撤銷(xiāo)地丟棄之前執(zhí)行清理操作。例如,代表輸入/輸出連接的對(duì)象的 finalize 方法可能會(huì)執(zhí)行顯式 I/O 事務(wù)以在對(duì)象被永久丟棄之前中斷連接。
Object 類(lèi)的 finalize 方法不執(zhí)行任何特殊操作;它只是正常返回。 Object 的子類(lèi)可以覆蓋這個(gè)定義。
Java 編程語(yǔ)言不保證哪個(gè)線(xiàn)程將為任何給定對(duì)象調(diào)用 finalize 方法。但是,可以保證調(diào)用 finalize 的線(xiàn)程在調(diào)用 finalize 時(shí)不會(huì)持有任何用戶(hù)可見(jiàn)的同步鎖。如果 finalize 方法拋出未捕獲的異常,則忽略該異常并終止該對(duì)象的終結(jié)。
在為一個(gè)對(duì)象調(diào)用 finalize 方法后,不會(huì)采取進(jìn)一步的行動(dòng),直到 Java 虛擬機(jī)再次確定沒(méi)有任何方法可以讓任何尚未終止的線(xiàn)程訪(fǎng)問(wèn)該對(duì)象,包括可能的行動(dòng)由其他準(zhǔn)備完成的對(duì)象或類(lèi),此時(shí)該對(duì)象可能被丟棄。
對(duì)于任何給定的對(duì)象,Java 虛擬機(jī)永遠(yuǎn)不會(huì)多次調(diào)用 finalize 方法。
finalize 方法拋出的任何異常都會(huì)導(dǎo)致該對(duì)象的終結(jié)被暫停,否則會(huì)被忽略。
覆蓋:
在類(lèi) Object 中完成
Throws:
| Throw名稱(chēng) | Throw描述 |
|---|---|
| Throwable | 此方法引發(fā)的異常 |
closeAshmem
public void closeAshmem()
關(guān)閉此 Ashmem。
通過(guò)createAshmem(java.lang.String,int)創(chuàng)建的Ashmem對(duì)象不再需要時(shí),必須調(diào)用該方法及時(shí)關(guān)閉,防止內(nèi)存泄漏。
mapAshmem
public boolean mapAshmem(int mapType)
使用指定的映射類(lèi)型將 Ashmem 對(duì)象映射到此進(jìn)程。
在使用 Ashmem 讀寫(xiě)數(shù)據(jù)之前,必須調(diào)用該方法將 Ashmem 對(duì)象映射到該進(jìn)程上。 映射大小是Ashmem對(duì)象的總內(nèi)存大小,映射從Ashmem的起始位置開(kāi)始。 映射類(lèi)型必須包含在為此 Ashmem 對(duì)象設(shè)置的保護(hù)類(lèi)型中。
參數(shù):
| 參數(shù)名稱(chēng) | 參數(shù)描述 |
|---|---|
| mapType | 指示要使用的映射類(lèi)型。 該值是 PROT_READ(可讀/不可讀)、PROT_WRITE(可寫(xiě)/不可寫(xiě))、PROT_EXEC(可執(zhí)行/不可執(zhí)行)或 PROT_NONE 的按位或組合。 |
返回:
如果映射成功,則返回 true; 否則返回 false。
mapReadAndWriteAShmem
public boolean mapReadAndWriteAShmem()
在 Ashmem 對(duì)象和此進(jìn)程之間創(chuàng)建讀/寫(xiě)映射。
映射大小是Ashmem對(duì)象的總內(nèi)存大小,映射從Ashmem的起始位置開(kāi)始。 調(diào)用該方法時(shí),確保Ashmem對(duì)象的保護(hù)類(lèi)型包括PROT_READ | PROT_WRITE。
返回:
如果映射成功,則返回 true; 否則返回 false。
mapReadOnlyAShmem
public boolean mapReadOnlyAShmem()
在 Ashmem 對(duì)象和此進(jìn)程之間創(chuàng)建只讀映射。
映射大小是Ashmem對(duì)象的總內(nèi)存大小,映射從Ashmem的起始位置開(kāi)始。 調(diào)用此方法時(shí),請(qǐng)確保 Ashmem 對(duì)象的保護(hù)類(lèi)型包括 PROT_READ。
返回:
如果映射成功,則返回 true; 否則返回 false。
unmapAShmem
public void unmapAShmem()
從此進(jìn)程中取消映射 Ashmem 對(duì)象。
在您使用完通過(guò) mapAshmem(int)、mapReadAndWriteAshmem 或 mapReadOnlyAshmem 映射到您的進(jìn)程的 Ashmem 后,您必須調(diào)用此方法取消映射以防止內(nèi)存泄漏。 如果需要,您可以再次創(chuàng)建映射。
setProtection
public boolean setProtection(int protectionType)
設(shè)置 Ashmem 對(duì)象的保護(hù)類(lèi)型。
保護(hù)類(lèi)型只能添加,不能刪除。
一旦設(shè)置了保護(hù)類(lèi)型,它將對(duì)所有到 Ashmem 對(duì)象的映射生效,無(wú)論這些映射是在設(shè)置保護(hù)類(lèi)型之前還是之后創(chuàng)建的。
參數(shù):
| 參數(shù)名稱(chēng) | 參數(shù)描述 |
|---|---|
| protectionType | 指示要設(shè)置的保護(hù)類(lèi)型。 該值是 PROT_READ、PROT_WRITE、PROT_EXEC 或 PROT_NONE 的按位或運(yùn)算組合。 |
返回:
設(shè)置成功返回true; 否則返回 false。
getAShmemSize
public int getAShmemSize()
獲取 Ashmem 對(duì)象的內(nèi)存大小。
返回:
返回 Ashmem 對(duì)象的內(nèi)存大小。
writeToAShmem
public boolean writeToAShmem(byte[] data, int size, int offset)
將數(shù)據(jù)寫(xiě)入 Ashmem 對(duì)象。
您需要控制多進(jìn)程操作的時(shí)序。
在調(diào)用該方法之前,請(qǐng)確保您已經(jīng)獲得了Ashmem對(duì)象的寫(xiě)權(quán)限,并且已經(jīng)為您的進(jìn)程創(chuàng)建了到該Ashmem對(duì)象的寫(xiě)映射。
參數(shù):
| 參數(shù)名稱(chēng) | 參數(shù)描述 |
|---|---|
| data | 表示要寫(xiě)入 Ashmem 對(duì)象的數(shù)據(jù)。 |
| size | 指示要寫(xiě)入的數(shù)據(jù)的大小。 |
| offset | 指示在 Ashmem 對(duì)象中寫(xiě)入數(shù)據(jù)的起始位置。 |
返回:
如果數(shù)據(jù)寫(xiě)入成功,則返回 true; 其他場(chǎng)景返回 false,如數(shù)據(jù)寫(xiě)入越界或未獲得寫(xiě)入權(quán)限。
readFromAShmem
public byte[] readFromAShmem(int size, int offset)
從 Ashmem 對(duì)象中讀取數(shù)據(jù)。
您需要控制多進(jìn)程操作的時(shí)序。
在調(diào)用此方法之前,請(qǐng)確保您已獲得 Ashmem 對(duì)象的讀取權(quán)限,并且已為您的進(jìn)程創(chuàng)建了到此 Ashmem 對(duì)象的讀取映射。
參數(shù):
| 參數(shù)名稱(chēng) | 參數(shù)描述 |
|---|---|
| size | 指示要讀取的數(shù)據(jù)的大小。 |
| offset | 指示 Ashmem 對(duì)象中讀取數(shù)據(jù)的起始位置。 |
返回:
返回讀取的數(shù)據(jù)。
getAshmemIdentity
public long getAshmemIdentity()
獲取 Ashmem 對(duì)象的身份。
返回:
返回 Ashmem 對(duì)象的標(biāo)識(shí)。
文章名稱(chēng):創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSAshmem
分享鏈接:http://m.5511xx.com/article/coedssj.html


咨詢(xún)
建站咨詢(xún)
