1. 程式人生 > >Netty原始碼解析 -- PoolChunk實現原理(jemalloc 3的演算法)

Netty原始碼解析 -- PoolChunk實現原理(jemalloc 3的演算法)

前面文章已經分享了Netty如何實現jemalloc 4演算法管理記憶體。 本文主要分享Netty 4.1.52之前版本中,PoolChunk如何使用jemalloc 3演算法管理記憶體。 感興趣的同學可以對比兩種演算法。 **原始碼分析基於Netty 4.1.29** 首先說明PoolChunk記憶體組織方式。 PoolChunk的記憶體大小預設是16M,它將記憶體組織成為一顆完美二叉樹。 二叉樹的每一層每個節點所代表的記憶體大小都是均等的,並且每一層節點所代表的記憶體大小總和加起來都是16M。 每一層節點可分配記憶體是父節點的1/2。整顆二叉樹的總層數為12,層數從0開始。 示意圖如下 ![](https://upload-images.jianshu.io/upload_images/3804367-eecc99a82e970e75.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 先看一下PoolChunk的建構函式 ``` PoolChunk(P