Netty 使用的是堆外內(nèi)存,需要手動(dòng)釋放,使用引用計(jì)數(shù)的方式管理內(nèi)存,當(dāng)引用計(jì)數(shù) =0,回收ByteBuf 底層內(nèi)存
原則:誰(shuí)使用retain() , 誰(shuí)釋放release()
1.1.2? 創(chuàng)建ByteBuf的方式其中?
ctx 為 ChannelHandlerContext 通道處理上下文對(duì)象
ctx.alloc() 返回?ByteBufAllocator?ByteBuf的分配器
2. 課程內(nèi)容 1 ByteBuf 的結(jié)構(gòu)API類別 | 名稱 | 使用 |
容量 | capacity() | 當(dāng)前ByteBuf容量?capacity?=? 已廢棄的字節(jié) + 可讀字節(jié) + 可寫(xiě)字節(jié) |
maxCapacity() | 大容量=? capacity?+?可擴(kuò)容字節(jié) | |
readableBytes() | ByteBuf當(dāng)前可讀字節(jié)數(shù),= writerIndex - readerIndex | |
isReadable() | 是否可讀 | |
writableBytes() | ByteBuf當(dāng)前可寫(xiě)字節(jié)數(shù),= capacity?-?writeIndex | |
isWritable() | 是否可寫(xiě) | |
MaxWritableBytes() | 大可寫(xiě)字節(jié)數(shù),= maxCapacity?-?writeIndex | |
讀寫(xiě)指針 | readerIndex() | 返回當(dāng)前讀指針readerIndex |
readerIndex(int) | 設(shè)置讀指針index | |
writerIndex() | 返回當(dāng)前寫(xiě)指針writerIndex | |
writerIndex(int) | 設(shè)置寫(xiě)指針index | |
markReaderIndex() | 保存當(dāng)前讀指針(推薦) | |
resetReaderIndex() | 把當(dāng)前讀指針恢復(fù)到之前保存的值(推薦) | |
markWriterIndex() | 保存當(dāng)前寫(xiě)指針(推薦) | |
resetWriterIndex() | 把當(dāng)前寫(xiě)指針恢復(fù)到之前保存的值(推薦) | |
讀寫(xiě) | readBytes(byte[] dst) | 把ByteBuf中的數(shù)據(jù)全部讀取到dst |
writeBytes(byte[] src) | 將src中的數(shù)據(jù)寫(xiě)入到ByteBuf | |
readByte() | 從ByteBuf中讀取一個(gè)字節(jié) | |
writeByte(byte b) | 往ByteBuf寫(xiě)入一個(gè)字節(jié) | |
retain() | 引用計(jì)數(shù)加1 | |
release() | 引用計(jì)數(shù)減1 | |
slice() | 截取readerIndex到writeIndex的數(shù)據(jù),返回大容量為原始ByteBuf的readableBytes()的ByteBuf | |
duplicate() | 共享原始ByteBuf,書(shū)本確實(shí)示例,后期補(bǔ)全 | |
copy() | 復(fù)制原始ByteBuf,返回的ByteBuf寫(xiě)數(shù)據(jù)不影響原始ByteBuf | |
retainedSlice() | 等價(jià)于slice().retain(),需要調(diào)用一次release(),否則報(bào)錯(cuò) | |
retainedDuplicate | 等價(jià)于duplicate().retain(),需要調(diào)用一次release(),否則報(bào)錯(cuò) | |
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧