以最小的访问开销在Java服务和本机应用程序之间共享缓冲区

时间:2013-07-31 21:03:07

标签: android ashmem

我正在尝试在Android Java服务和本机进程之间设置共享内存区域。本机进程没有Java组件,纯粹是C ++,可以通过命令行直接从shell调用。

我相信我可以使用ashmem和粘合剂来实现这一目标。首先调用ashmem_create_region,在结果上调用mmap,然后使用binder将生成的fd传递给另一个进程。另一个进程在fd上进行mmap,从而获得对共享区域的访问权。

我知道这可以在两个Java应用程序之间工作,也可以在Java应用程序或服务与本机模式进程之间工作。

我现在想知道Java服务如何有效地访问数据。我想使用这种机制将一个大小约为300MB的浮动缓冲区从本机应用程序复制到Java服务。现在,Java服务需要访问此数据,而不会产生JNI等开销。分配共享区域的最佳策略是什么,以便本机程序可以快速将浮点数复制到缓冲区中,Java服务可以以最小的开销访问值?

感谢

1 个答案:

答案 0 :(得分:0)

看看这个例子。 它在Java和本机应用程序之间创建共享内存。 https://github.com/vecio/AndroidIPC