树叶云鸿蒙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

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

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