关于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。当然文件同理。
这样的方式可以最大程度维护我们所有的内存,并且减少内存抖动的情况。同时可以根据不同业务使用不同的大小,甚至可以动态调整等策略。
00 -
LillteZheng
提问者
2019-09-10
老师,还有个疑问,为什么要对String 类型的数据再抽出 bytes 的父类呢?发现 File 还是继承 sendPacket 和 ReceivePacket;那如果 byte 只是对 string 有作用,那这样做不是让类增加且不便于理解吗? - - 、
022019-09-12
相似问题
对于IoArgs作用的疑问
回答 1
IoArgs并发读问题
回答 1