关于IoArgs的ByteBuffer大小问题

来源:9-8 发送文件到服务器-3

LillteZheng

2019-09-10

在 IoArgs 这里 ByteBuffer 现在改成 256 了,但字符串过小也不需要这么多,而文件的传输一般都是M以上的,所以对于 文件流来说,又显得小了,为什么搞个父类,然后根据文件或者字符串,让子类去调整bytebuffer 的大小呢?

private int limit = 256;
private ByteBuffer buffer = ByteBuffer.allocate(256);
写回答

2回答

Qiujuer

2019-09-10

其实在这里最开始的考虑还有“缓冲池”的技术的,但是因为篇幅实在有限,所以就没有扩展这个部分的内容了。


理论来说,我们会有很大的一个buffer池,里边有较大的几个数组,如果是小字符会分配一个可以容纳字符串大小的其中一节数组给他,然后使用warp的方式去得到一个buffer。当然文件同理。

这样的方式可以最大程度维护我们所有的内存,并且减少内存抖动的情况。同时可以根据不同业务使用不同的大小,甚至可以动态调整等策略。

0
0

LillteZheng

提问者

2019-09-10

老师,还有个疑问,为什么要对String 类型的数据再抽出 bytes 的父类呢?发现 File 还是继承  sendPacket 和 ReceivePacket;那如果 byte 只是对 string 有作用,那这样做不是让类增加且不便于理解吗? - - 、

0
2
LillteZheng
回复
Qiujuer
好的,谢谢老师,我再好好理解一下
2019-09-12
共2条回复

Socket网络编程进阶与实战 系统掌握Socket核心技术

理论+实践,系统且深入掌握Socket核心技术,从容应对各种Socket应用场景的不二之选

2314 学习 · 476 问题

查看课程