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

2023-12-27

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

我相信我可以使用 ashmem 和 binder 来完成此任务。首先调用ashmem_create_region,对结果调用mmap,然后使用binder将生成的fd传递给其他进程。另一个进程对 fd 进行 mmap,从而获得对共享区域的访问权限。

据我了解,这适用于两个 Java 应用程序之间,也适用于 Java 应用程序或服务与本机模式进程之间。

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

thanks


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐