netty源碼閱讀之UnpooledByteBufAllocator


使用IDEA閱讀源碼Navigate下面的工具是個好東西 。可以幫助分析類的結構等

ByteBufAllocator主要用來生成三種ByteBuf :HeadBuffer,DirectBuffer,CompositeBuffer. 還有一個ByteBufAllocator DEFAULT 靜態屬性。 我們可以通過io.netty.allocator.type來控制該靜態屬性的類型:unpooled和pooled (是否使用緩沖池)。

 

用於ByteBuf是通過引用計數來管理內存。在AbstractByteBufAllocator引用了一個toLeakAwareBuffer方法幫助分析內存是否泄漏 。具體參考http://blog.csdn.net/damacheng/article/details/42393757

netty根據是否使用緩存池提供了兩個實現類。UnpooledByteBufAllocator和PooledByteBufAllocator(這個比較復雜,實現了jemalloc的算法)

 

UnpooledByteBufAllocator根據使用使用sun.misc.Unsafe類提供了兩種直接緩存

UnpooledUnsafeDirectByteBuf和UnpooledDirectByteBuf  一個使用unsafe來對直接緩沖區進行操作,一個使用bytebuffer的方法對緩沖區進行操作。

后面看下兩種的不同。以便加深對unsafe的認識


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM