MQX内存管理的缺陷-申请大量内存块后释放速度会变慢

2020-02-20 20:53发布

  我们的实际应用中需要申请大量的内存块,内存块大小不同,这时如果要释放其中的某一个内存块,需要很长时间而且这段时间是无法响应中断的,严重影响了产品。
  我学习了下MQX关于内存管理这部分的代码,发现MQX将申请的内存块作为一个单向链表,释放时每次都遍历很长时间才能找到需要释放的内存块,而且这期间代码
内有明确的关中断。不知道其他坛友是否也碰到过这个问题?
  这部分代码我自己修改了部分,减少了遍历时间,但是感觉MQX在内存管理部分有些混乱,官方是不是考虑更新一下。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
twitter
1楼-- · 2020-02-22 07:07
可以改写内存管理算法,用红黑树的话,效率能提高很多的。具体参考以前Linux内核的内存管理做法,除了红黑树外,还要考虑内存块的合并。
wxfje
2楼-- · 2020-02-22 08:21
0flame0 发表于 2014-11-10 08:13
只是在分配和释放大量内存块(多于1万个)时会这样

这样的话,就只能改写算法了。我在应用中还没碰到需要用这么多的

一周热门 更多>