ByteBuffer与数据报包上的缓冲区

时间:2011-01-26 02:12:41

标签: java networking garbage-collection sockets

我已经读过,应该在Buffer类上使用ByteBuffer(java.nio)来读取数据,因为它更有效(?)。我的问题围绕着一个UDP客户端,它从多播地址读取数据包并将它们处理成原始对象。从DatagramSocket解析这些数据包的最有效/最快的方法是什么?现在,我有一个数据报包,其字节数据包裹ByteBuffer并从那里读取。我的目标是尽量减少新对象的创建并最大限度地提高速度。

2 个答案:

答案 0 :(得分:3)

DatagramSocket无法直接读取ByteBuffer,但您可以使用DatagramChannel代替。

答案 1 :(得分:0)

我认为ByteBuffer的使用只是因为Buffer没有足够的功能来从程序员的角度提高访问效率,而不是效率。我怀疑效率是否有差异,因为底层代码大多是重复的。

请注意,两者是否比使用简单字节数组更有效并不总是很明显 - NIO性能很容易被误导。