Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
9a52664f
D
Docs
项目概览
OpenHarmony
/
Docs
接近 2 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
9a52664f
编写于
6月 02, 2023
作者:
O
openharmony_ci
提交者:
Gitee
6月 02, 2023
浏览文件
操作
浏览文件
下载
差异文件
!19003 内存管理新增Purgeable Memory 接口文档
Merge pull request !19003 from xywang/master
上级
c1e5a498
397c1c0e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
119 addition
and
1 deletion
+119
-1
zh-cn/application-dev/napi/Readme-CN.md
zh-cn/application-dev/napi/Readme-CN.md
+2
-1
zh-cn/application-dev/napi/purgeable-memory-guidelines.md
zh-cn/application-dev/napi/purgeable-memory-guidelines.md
+117
-0
未找到文件。
zh-cn/application-dev/napi/Readme-CN.md
浏览文件 @
9a52664f
...
...
@@ -7,4 +7,5 @@
-
[
NativeWindow开发指导
](
native-window-guidelines.md
)
-
[
使用MindSpore Lite引擎进行模型推理
](
mindspore-lite-guidelines.md
)
-
[
使用MindSpore Lite进行离线模型的转换及推理
](
mindspore-lite-offline-model-guidelines.md
)
-
[
Neural Network Runtime对接AI推理框架开发指导
](
neural-network-runtime-guidelines.md
)
\ No newline at end of file
-
[
Neural Network Runtime对接AI推理框架开发指导
](
neural-network-runtime-guidelines.md
)
-
[
Purgeable memory开发指导
](
purgeable-memory-guidelines.md
)
zh-cn/application-dev/napi/purgeable-memory-guidelines.md
0 → 100644
浏览文件 @
9a52664f
# 内存管理purgeable内存开发指导
## 场景介绍
开发者可以通过本指导了解在OpenHarmony应用中,如何使用Native purgeablememory接口操作purgeable内存。功能包括purgeable内存申请、释放。
针对Purgeable memory,常见的开发场景如下:
*
通过
`Purgeablmemory`
提供的
`NAPI`
接口申请PurgeableMemory对象,并将数据内容写入PurgeableMemory对象。
*
使用完毕后使用
## 接口说明
| 接口名 | 描述 |
| -------- | -------- |
| OH_PurgeableMemory
\*
OH_PurgeableMemory_Create(size_t size, OH_PurgeableMemory_ModifyFunc func, void
\*
funcPara) | 创建Purgeable memory对象,每次调用都会产生一个新的Purgeable memory对象。 |
| bool OH_PurgeableMemory_Destroy(OH_PurgeableMemory
\*
purgObj) | 将Purgeable memory对象会被析构掉。 |
| bool OH_PurgeableMemory_BeginRead(OH_PurgeableMemory
\*
purgObj) | 对purgeable对象进行读访问。 |
| void OH_PurgeableMemory_EndRead(OH_PurgeableMemory
\*
purgObj) | 读操作结束,将Purgeable对象的引用计数减1,当引用计数为0的时候, 该Purgeable memory对象可以被系统回收。 |
|bool OH_PurgeableMemory_BeginWrite(OH_PurgeableMemory
\*
purgObj) | 对purgeable对象进行写访问。|
|void OH_PurgeableMemory_EndWrite(OH_PurgeableMemory
\*
purgObj)|写操作结束,将Purgeable对象的引用计数减1,当引用计数为0的时候,该Purgeable memory对象可以被系统回收。|
|void
\*
OH_PurgeableMemory_GetContent(OH_PurgeableMemory
\*
purgObj)|获取PurgeableMemory对象内存数据。|
|size_t OH_PurgeableMemory_ContentSize(OH_PurgeableMemory
\*
purgObj)|获取PurgeableMemory对象内存数据大小。|
|bool OH_PurgeableMemory_AppendModify(OH_PurgeableMemory
\*
purgObj, OH_PurgeableMemory_ModifyFunc func, void
\*
funcPara)|添加PurgeableMemory对象的修改方法。|
## Purgeable应用开发步骤
以下步骤描述了在
**OpenHarmony**
中如何使用
`PurgeableMemory`
提供的
`NAPI`
接口,申请Purgeable Memory对象,并将内容写入Purgeable对象后,对相应对象进行读写访问。
1.
声明purgeable 对象创建规则
```
c++
// 声明构建函数的参数
struct
ParaData
{
int
start
;
int
end
;
}
// 声明一个使用ModifyFunc
bool
FactorialFunc
(
void
*
data
,
size_t
size
,
void
*
param
){
bool
ret
=
true
;
int
oriData
=
*
(
int
*
)(
data
);
int
i
=
param
->
start
;
while
(
i
<
param
->
end
){
oriData
*=
i
;
}
*
data
=
oriData
;
if
(
oriData
<
0
)
ret
=
false
;
return
ret
;
}
// 声明修改purgeable对象扩展函数的参数
struct
AppendParaData
{
int
newPara
;
}
// 声明修改purgeable对象的扩展函数
bool
AddFunc
(
void
*
data
,
size_t
size
,
void
*
param
){
bool
ret
=
true
;
int
oriData
=
*
(
int
*
)(
data
);
oriData
+=
param
->
newPara
;
*
data
=
oriData
;
return
ret
;
}
```
2.
创建Purgeable对象
```
c++
// 声明一个4MB的purgeable对象大小
#define DATASIZE (4 * 1024 * 1024)
// 声明创建函数的参数
struct
ParaData
pdata
=
{
1
,
2
};
// 创建一个Purgeable对象
OH_PurgableMmory
*
pPurgmem
=
OH_PurgableMmory_Create
(
DATASIZE
,
FactorialFunc
,
&
pdata
);
```
3.
读访问Purgeable 对象
```
c++
// 读取对象
OH_PurgeableMemory_BeginRead
(
pPurgmem
);
// 获取purgeable对象大小
size_t
size
=
OH_PurgeableMemory_ContentSize
(
pPurgmem
);
// 获取purgeable对象内容
ReqObj
*
pReqObj
=
(
ReqObj
*
)
OH_PurgeableMemory_GetContent
(
pPurgmem
);
// 读取purgeable对象结束
OH_PurgeableMemory_EndRead
(
pPurgmem
);
```
4.
写访问Purgeable对象
```
c++
// 修改Purgeable对象
OH_PurgeableMemory_BeginWrite
(
pPurgmem
)
// 获取purgeable对象数据
ReqObj
*
pReqObj
=
(
ReqObj
*
)
OH_PurgeableMemory_GetContent
(
pPurgmem
);
// 声明扩展创建函数的参数
struct
AppendParaData
apdata
=
{
1
};
// 更新purgeable 对象重建规则
OH_PurgeableMemory_AppendModify
(
pPurgmem
,
AddFunc
,
&
apdata
);
// 修改purgeable对象结束
OH_PurgeableMemory_EndWrite
(
pPurgmem
);
```
5.
销毁Purgeable对象
```
c++
// 销毁对象
OH_PurgeableMemory_Destroy
(
pPurgmem
);
```
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录