IoBuffer是MINA框架自己的用于替代ByteBuffer的一个类,MINA不直接使用ByteBuffer的原因有两个:
1.ByteBuffer没有一些有用的getter和putter方法比如get/putString
2.ByteBuffer的长度是固定的所以很难存储变长的数据
IoBuffer提供一个新的wrap方法可以直接包裹ByteBuffer或则byte[]来得到IoBuffer对象
AutoExpand:setAutoExpand(true)之后,容量不够时IoBuffer对象会自动扩展它的limit和capacity值
AutoShrink:如果autoShrink为true,当调用compact方法且小于或等于四分之一的capacity空间被使用则,capacity减半,或则可以直接调用shrink()方法。但是如果新的capacity将会小于minimumCapacity那就不生效
不管是expand还是shrink都是通过生成一个新的底层ByteBuffer实现的
Derived Buffer:衍生Buffer可以通过duplicate()、slice()、asReadOnlyBuffer()等方法得到,一般都用于在多个IoSession共享相同消息。有一点要注意,这些衍生buffer都是不能expand或shrink的