1

我有一个关于 Java 的问题,我已经解决了大约一周。我正在尝试找到一种有效的方法,可以在不丢失数据的情况下每秒向 Android 上的外部存储写入大约 90-120MB。在我的测试中,我得到了 18-20MB/s,这是外部存储的正常速度范围,但是由于 Android 中每个进程的堆是 140MB-256MB(我使用 largeHeap 标志获得最大 138MB),所以不可能做一个大的足够的缓冲区以使用 Java 链表或数组保持数据完整(数据以 90+MB/s 的速度生成)。JNI 是创建足够大的循环数组或链表以在文件写入赶上时保留数据的好选择吗?我看到另一个帖子,有人建议让服务在单独的进程中运行以获得“额外”内存。我' m 只是担心序列化会减慢生成数据的传输速度。到目前为止,我已经沮丧地删除了所有代码。提前致谢。

4

1 回答 1

1

要写入 90-120 MB/s,您需要支持此数据速率的设备。注意:典型的 HDD 无法做到这一点。

您可以添加一些额外的缓冲,但这是不可持续的。相反,我建议您找到一种方法,以更少的数据写入相同的信息。例如通过压缩数据。

BTW JNI 不会让你的设备运行得更快,或者给你更多的内存。

于 2013-04-28T19:59:51.650 回答