1.计算内存块需要的大小-》计算内存块在缓存池的位置-》是否找到相应的位置-》找到位置则尝试从缓存池中取-》取到则使用queue中拿-》取不到就创建一个与之相近大小的内存,用过之后,放到缓存池。allocate-Arena分配内存区域。
2.event-loop pool池化中有三个区tiny(16b-512b),small(512b,4kb),normal(8kb,32kb)
3.内存回收:relase() : recycle(回收内存块。清空内存数组和引用计数器),free(清空对象引用地址)。gc观察到这个对象没有人引用,就会回收此对象。回收栈(256-4096)
2.零拷贝-compositeByteBuf-应用级别
CompositeByteBuf compositeByteBuf=Unplood.compositeBuf();
unpooled.wrappedByteBuf(new Byte[]{1,2,})
netty池化内存分配
最新推荐文章于 2024-06-18 21:43:08 发布