默认是8M,但是本身文件大小是小于8M的,不太清楚应该设置多大能起到缓冲的作用,是应该小于等于文件大小吗?因为下载文件是跑批操作,批量文件,所以也要考虑到频繁创建缓冲区的内存消耗。
默认是8M,但是本身文件大小是小于8M的,不太清楚应该设置多大能起到缓冲的作用,是应该小于等于文件大小吗?因为下载文件是跑批操作,批量文件,所以也要考虑到频繁创建缓冲区的内存消耗。
15 回答8.2k 阅读
8 回答6k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
1 回答2.2k 阅读✓ 已解决
BufferedInputStream
维护的是用户空间中的一个数组,其目的是为了减少应用程序陷入内核的次数,比如一个15M的文件,如果你缓冲区大小是3M,那么会陷入内核5次,如果缓冲区大小8M,那么会陷入内核2次,如果缓冲区大小16M,那么只用陷入1次,虽然减少内核陷入的次数(都会起到缓冲作用),但是增加了内存消耗,而且会有浪费的可能(比如上面的16M,实际上只读了15M,那就浪费了1M),这样一来缓冲区大小的设置就由你自己去权衡,比如说内存足够无所谓,那缓冲区当然越大越好,比如说你80%的文件平均大小在6M左右,那你可以设置6M,考虑到批量操作,缓冲区的频繁申请和回收会损失部分性能,所以可以用缓冲池的技术去避免,做到缓冲区的重复利用。