Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 大型缓冲区有缺点吗?_Java_Android_Networking_Io_Buffer - Fatal编程技术网

Java 大型缓冲区有缺点吗?

Java 大型缓冲区有缺点吗?,java,android,networking,io,buffer,Java,Android,Networking,Io,Buffer,在Java网络传输文件的实验中,我发现>64k的缓冲区性能最好。然而,从我在谷歌上看到的情况来看(例如),大多数人建议使用8-32k的较小缓冲区,因为它可以放入CPU缓存。在传输大量数据时,该因素是否重要?牺牲更好的网络吞吐量并使用更小的缓冲区是否更好?(这也包括Android设备,可能是任何低功耗设备)我认为你应该继续你的实验,包括一些低功耗Android设备。只有测量才能判断在您的情况下哪个因素更重要。缓存位置在网络速率上不会有任何区别。基本上越大越好,除了在内存有限的情况下,比如移动设备。

在Java网络传输文件的实验中,我发现>64k的缓冲区性能最好。然而,从我在谷歌上看到的情况来看(例如),大多数人建议使用8-32k的较小缓冲区,因为它可以放入CPU缓存。在传输大量数据时,该因素是否重要?牺牲更好的网络吞吐量并使用更小的缓冲区是否更好?(这也包括Android设备,可能是任何低功耗设备)

我认为你应该继续你的实验,包括一些低功耗Android设备。只有测量才能判断在您的情况下哪个因素更重要。缓存位置在网络速率上不会有任何区别。基本上越大越好,除了在内存有限的情况下,比如移动设备。我发现在我的Galaxy S2上,一次分配256k字节的字节
字节缓冲区
,并使用它在循环中检索数据,导致垃圾收集器连续运行-不好。也就是说,无论缓冲区大小如何,在写入手机内部存储器时,最高速度通常为4-5 MB/秒,因此64-128k通常是不错的选择。在桌面硬件频谱上,我使用256k缓冲区和SSD设法使千兆网络连接饱和。