Netty 从 4.1.45 版本开始,基于 jemalloc4.x 算法对内存模块进行重构,两者差别比较大。
内存规格
在文章 深挖 Netty 高性能内存管理 我们知道了基于 jemalloc3 的 Netty将整个内存划分为:Tiny、Small、Normal 和 Huge 四类。其中 Tiny 为 0 ~ 512 B 之间的内存块,Small 为 512B ~ 8KB 之间的内存块,Normal 为 8KB ~ 16M 之间的内存块,Huge 则是大于 16M 的,如下图:
而基于 jemalloc4 的 Netty 则将 Tiny 去掉了,保留了 Small、Normal、Huge,内存划分如下:
- Small:[0-28K]
- Normal:(28K - 16M]
- Huge:> 16M
整体架构
下图是基于 jemalloc3 的 Netty 的内存池架构图:
关于这图的详情,大明哥就不再阐述了,主要是用它来跟基于 jemalloc4 的 Netty 内存结构图对比:
从这个图可以看出,Netty 根据内存模型抽象出来了一些组件:PoolArena
、PoolChunkList
、PoolChunk
、PoolSubpage
、PoolThreadCache</