- 跟闪电侠学Netty:Netty即时聊天实战与底层原理
- 俞超
- 299字
- 2022-05-05 22:12:48
7.2 容量API
capacity()
表示ByteBuf底层占用了多少字节的内存(包括丢弃的字节、可读字节、可写字节),不同的底层实现机制有不同的计算方式,后面我们介绍ByteBuf的分类时会讲到。
maxCapacity()
表示ByteBuf底层最大能够占用多少字节的内存,当向ByteBuf中写数据的时候,如果发现容量不足,则进行扩容,直到扩容到maxCapacity,超过这个数,就抛出异常。
readableBytes()与isReadable()
readableBytes()表示ByteBuf当前可读的字节数,它的值等于writerIndex-readerIndex,如果两者相等,则不可读,isReadable()方法返回false。
writableBytes()、isWritable()与maxWritableBytes()
writableBytes()表示ByteBuf当前可写的字节数,它的值等于capacity-writerIndex,如果两者相等,则表示不可写,isWritable()返回false,但是这个时候,并不代表不能往ByteBuf写数据了。如果发现往ByteBuf写数据写不进去,Netty会自动扩容ByteBuf,直到底层的内存大小为maxCapacity,而maxWritableBytes()就表示可写的最大字节数,它的值等于maxCapacitywriterIndex。