在Android中快速编写大量数据文件

时间:2013-04-28 19:54:40

标签: java android buffer

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

1 个答案:

答案 0 :(得分:1)

要写入90-120 MB / s,您需要一台支持此数据速率的设备。注意:典型的硬盘驱动器不能做这么多。

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

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