树叶云鸿蒙OS教程:鸿蒙OS Ashmem

Ashmem

java.lang.Object

|—ohos.utils.Ashmem

public class Ashmem
extends Object

提供与匿名共享内存(Ashmem)相关的方法,包括创建、关闭、映射和取消映射Ashmem,从Ashmem读取数据和向Ashmem写入数据,获取Ashmem大小,为Ashmem设置保护。

Ashmem 是由一个进程创建的。 您可以将创建的 Ashmem 对象映射到当前进程以读取和写入数据。 或者,您可以将此 Ashmem 对象传输并映射到另一个进程以进行数据读取和写入。 您需要确保多个进程之间并发读写操作的时序。

字段摘要

修饰符和类型字段描述
static intPROT_EXEC表示可以执行 Ashmem 对象中的数据。
static intPROT_NONE表示 Ashmem 对象中的数据无法读取、写入或执行。
static intPROT_READ表示可以读取 Ashmem 对象中的数据。
static intPROT_WRITE表示可以写入 Ashmem 对象中的数据。

构造函数摘要

构造函数描述
Ashmem(long nativeObject)

方法总结

修饰符和类型方法描述
voidcloseAshmem()关闭此 Ashmem。
static AshmemcreateAshmem(String name, int size)根据指定的调试名称和内存大小创建 Ashmem 对象。
static AshmemcreateAshmemFromExisting(long unwrappedNativeObject)通过复制现有的 Ashmem 对象来创建 Ashmem 对象。
protected voidfinalize()当垃圾收集确定不再有对该对象的引用时,由对象上的垃圾收集器调用。
longgetAshmemIdentity()获取 Ashmem 对象的身份。
intgetAShmemSize()获取 Ashmem 对象的内存大小。
booleanmapAshmem(int mapType)使用指定的映射类型将 Ashmem 对象映射到此进程。
booleanmapReadAndWriteAShmem()在 Ashmem 对象和此进程之间创建读/写映射。
booleanmapReadOnlyAShmem()在 Ashmem 对象和此进程之间创建只读映射。
byte[]readFromAShmem(int size, int offset)从 Ashmem 对象中读取数据。
booleansetProtection(int protectionType)设置 Ashmem 对象的保护类型。
voidunmapAShmem()从此进程中取消映射 Ashmem 对象。
booleanwriteToAShmem(byte[] data, int size, int offset)将数据写入 Ashmem 对象。
从类 java.lang.Object 继承的方法
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

字段详细信息

PROT_EXEC

public static final int PROT_EXEC

表示可以执行 Ashmem 对象中的数据。

它可用于设置 Ashmem 对象的保护或映射类型。

PROT_NONE

public static final int PROT_NONE

表示 Ashmem 对象中的数据无法读取、写入或执行。

它可用于设置 Ashmem 对象的保护或映射类型。

PROT_READ

public static final int PROT_READ

表示可以读取 Ashmem 对象中的数据。

它可用于设置 Ashmem 对象的保护或映射类型。

PROT_WRITE

public static final int PROT_WRITE

表示可以写入 Ashmem 对象中的数据。

它可用于设置 Ashmem 对象的保护或映射类型。

构造函数详细信息

Ashmem

public Ashmem(long nativeObject)

方法详情

createAshmem

public static Ashmem createAshmem(String name, int size)

根据指定的调试名称和内存大小创建 Ashmem 对象。

调试名称仅用于在检查已映射到此 Ashmem 的进程的内存映射时查询有关此 Ashmem 的信息。

参数:

参数名称参数描述
name调试名称,方便查询Ashmem信息。
size指示 Ashmem 的大小。

返回:

返回创建的 Ashmem 对象; 如果创建失败则返回 null。

createAshmemFromExisting

public static Ashmem createAshmemFromExisting(long unwrappedNativeObject)

通过复制现有的 Ashmem 对象来创建 Ashmem 对象。

两个 Ashmem 对象指向同一个共享内存区域。

参数:

参数名称参数描述
unwrappedNativeObject表示现有 Ashmem 对象的 ID。 您可以使用 getAshmemIdentity() 方法获取 ID。

返回:

返回创建的 Ashmem 对象。

finalize

protected void finalize() throws Throwable

从类复制的描述:对象

当垃圾收集确定不再有对该对象的引用时,由对象上的垃圾收集器调用。子类覆盖 finalize 方法以释放系统资源或执行其他清理。

finalize 的一般约定是,当 Java™ 虚拟机确定不再有任何方法可以让任何尚未终止的线程访问该对象时调用它,除非是由于某个操作而导致的。由准备完成的其他对象或类的完成所采取。 finalize 方法可以采取任何行动,包括使该对象再次可供其他线程使用;然而,finalize 的通常目的是在对象被不可撤销地丢弃之前执行清理操作。例如,代表输入/输出连接的对象的 finalize 方法可能会执行显式 I/O 事务以在对象被永久丢弃之前中断连接。

Object 类的 finalize 方法不执行任何特殊操作;它只是正常返回。 Object 的子类可以覆盖这个定义。

Java 编程语言不保证哪个线程将为任何给定对象调用 finalize 方法。但是,可以保证调用 finalize 的线程在调用 finalize 时不会持有任何用户可见的同步锁。如果 finalize 方法抛出未捕获的异常,则忽略该异常并终止该对象的终结。

在为一个对象调用 finalize 方法后,不会采取进一步的行动,直到 Java 虚拟机再次确定没有任何方法可以让任何尚未终止的线程访问该对象,包括可能的行动由其他准备完成的对象或类,此时该对象可能被丢弃。

对于任何给定的对象,Java 虚拟机永远不会多次调用 finalize 方法。

finalize 方法抛出的任何异常都会导致该对象的终结被暂停,否则会被忽略。

覆盖:

在类 Object 中完成

Throws:

Throw名称Throw描述
Throwable此方法引发的异常

closeAshmem

public void closeAshmem()

关闭此 Ashmem。

通过createAshmem(java.lang.String,int)创建的Ashmem对象不再需要时,必须调用该方法及时关闭,防止内存泄漏。

mapAshmem

public boolean mapAshmem(int mapType)

使用指定的映射类型将 Ashmem 对象映射到此进程。

在使用 Ashmem 读写数据之前,必须调用该方法将 Ashmem 对象映射到该进程上。 映射大小是Ashmem对象的总内存大小,映射从Ashmem的起始位置开始。 映射类型必须包含在为此 Ashmem 对象设置的保护类型中。

参数:

参数名称参数描述
mapType指示要使用的映射类型。 该值是 PROT_READ(可读/不可读)、PROT_WRITE(可写/不可写)、PROT_EXEC(可执行/不可执行)或 PROT_NONE 的按位或组合。

返回:

如果映射成功,则返回 true; 否则返回 false。

mapReadAndWriteAShmem

public boolean mapReadAndWriteAShmem()

在 Ashmem 对象和此进程之间创建读/写映射。

映射大小是Ashmem对象的总内存大小,映射从Ashmem的起始位置开始。 调用该方法时,确保Ashmem对象的保护类型包括PROT_READ | PROT_WRITE。

返回:

如果映射成功,则返回 true; 否则返回 false。

mapReadOnlyAShmem

public boolean mapReadOnlyAShmem()

在 Ashmem 对象和此进程之间创建只读映射。

映射大小是Ashmem对象的总内存大小,映射从Ashmem的起始位置开始。 调用此方法时,请确保 Ashmem 对象的保护类型包括 PROT_READ。

返回:

如果映射成功,则返回 true; 否则返回 false。

unmapAShmem

public void unmapAShmem()

从此进程中取消映射 Ashmem 对象。

在您使用完通过 mapAshmem(int)、mapReadAndWriteAshmem 或 mapReadOnlyAshmem 映射到您的进程的 Ashmem 后,您必须调用此方法取消映射以防止内存泄漏。 如果需要,您可以再次创建映射。

setProtection

public boolean setProtection(int protectionType)

设置 Ashmem 对象的保护类型。

保护类型只能添加,不能删除。

一旦设置了保护类型,它将对所有到 Ashmem 对象的映射生效,无论这些映射是在设置保护类型之前还是之后创建的。

参数:

参数名称参数描述
protectionType指示要设置的保护类型。 该值是 PROT_READ、PROT_WRITE、PROT_EXEC 或 PROT_NONE 的按位或运算组合。

返回:

设置成功返回true; 否则返回 false。

getAShmemSize

public int getAShmemSize()

获取 Ashmem 对象的内存大小。

返回:

返回 Ashmem 对象的内存大小。

writeToAShmem

public boolean writeToAShmem(byte[] data, int size, int offset)

将数据写入 Ashmem 对象。

您需要控制多进程操作的时序。

在调用该方法之前,请确保您已经获得了Ashmem对象的写权限,并且已经为您的进程创建了到该Ashmem对象的写映射。

参数:

参数名称参数描述
data表示要写入 Ashmem 对象的数据。
size指示要写入的数据的大小。
offset指示在 Ashmem 对象中写入数据的起始位置。

返回:

如果数据写入成功,则返回 true; 其他场景返回 false,如数据写入越界或未获得写入权限。

readFromAShmem

public byte[] readFromAShmem(int size, int offset)

从 Ashmem 对象中读取数据。

您需要控制多进程操作的时序。

在调用此方法之前,请确保您已获得 Ashmem 对象的读取权限,并且已为您的进程创建了到此 Ashmem 对象的读取映射。

参数:

参数名称参数描述
size指示要读取的数据的大小。
offset指示 Ashmem 对象中读取数据的起始位置。

返回:

返回读取的数据。

getAshmemIdentity

public long getAshmemIdentity()

获取 Ashmem 对象的身份。

返回:

返回 Ashmem 对象的标识。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/211099.html<

(0)
运维的头像运维
上一篇2025-04-10 05:59
下一篇 2025-04-10 06:00

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注