使用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的認識