free
当PoolChunk需要释放内存空间时可调用free
方法,具体的源码过程如下:
在这个过程中最重要的是第三步的collapseRuns
方法,当释放了空间以后要更新runsAvail
和runAvailsMap
的信息,如果handle对应的内存空间的上边界以及下边界是空闲的空间则需要合并,方法如下:
collapsePast
合并上边界:
为了更好的理解该方法,以下面的空间图为例:
如果是相连的,过程如下:
如果不相连,过程如下:
collapseNext
合并下边界:
为了更好的理解该方法,以下面的空间图为例:
如果是相连的,过程如下:
如果不相连,过程如下:
至此,PoolChunk的内存释放分析到此结束。
全文完,如果觉得文章有点意思,不妨点个“赞”或者“在看”吧,您的每一份正反馈都是对三横兰写作的最大肯定,感谢阅读_
每天坚持一点点,每天进步一点点
坚持是日复一日,质变需日积月累
我是三横兰,那个三横的兰