全部评论
具体系统具体分析。基本上思路都是内存池中拿,小块内存怎么拿,大块内存怎么拿,各不一样。系统回收,也看情况。大块内存怎么还,小块内存怎么还。还的时候,是立即给操作系统还是给内存池。内存高水位,低水位怎么处理。malloc的版本各不一样,可以搜一下tcmalloc,或者malloc的论文。如果是stl的分配器(stl源码剖析讲解的那个),128字节下靠应用层内存池链表维护。128字节以上靠段页式操作系统维护。题外话,操作系统对一个进程分配的上虚拟内存,物理内存的调度又要搞事。叠床架屋……记得分层去想。
回收的时候根据地址和内存大小判断另一个是不是它的伙伴,如果是的话并且没有被使用就合并(然后你还要用一个位图去表示这块内存有没有被使用),递归进行就行了。
向上取整,回收的时候看伙伴能不能合并,能就一直合并到不能合并
从8那里取。3的阶那个。
相关推荐
点赞 评论 收藏
分享
11-10 08:05
河北师范大学 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享
