看完这篇还不清楚Netty的内存管理,那我就哭了! (3)

先尝试在

看完这篇还不清楚Netty的内存管理,那我就哭了!

进行分配,根据不同的类型定位到不同的Caches,如果有进行分配直接返回。

如果

看完这篇还不清楚Netty的内存管理,那我就哭了!

分配不了,进行上面分配。

步骤分配细节:看看需要分配的是什么类型 page还是subpage,如果是subpage在根据看看是tinySubpagePools还是smallSubpagePools,找到对应的槽位,看看链表里是否有可用的PoolSubpage,如果有就进行分配修改标记退出,如果没有就现需要在先分配一个page了,根据chunklist的这些看看是否有合适的,如果有合适的,那么在这些已经有的chunk上面进行分配一个page (分配page也是这个情况了)

之后在根据分配到的page,进行该请求大小的分配 (由于一个page可以存储很多同大小的数量)需要用long的位标记,表示该位置分配了,并且修改完全二叉树的父等值,分配结束。如果没有chunk那么需要新分配一块chunk之后重复上面步骤即可。

释放核心

释放入口 : byteBuf.release();

进行跟进代码:

看完这篇还不清楚Netty的内存管理,那我就哭了!

看完这篇还不清楚Netty的内存管理,那我就哭了!

看完这篇还不清楚Netty的内存管理,那我就哭了!

通过这段代码我们就这段放入到相应的queue了:

看完这篇还不清楚Netty的内存管理,那我就哭了!

缓存到了对应的Cache的queue里面了。

文章github源代码地址:nettydemo,或者公号回复“Netty”获取源码地址。

如果读完觉得有收获的话,欢迎点赞、关注、加公众号 [匠心零度] ,查阅更多精彩历史!!!

看完这篇还不清楚Netty的内存管理,那我就哭了!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpgjsp.html