嘿,我记得那次在实验室,我花了一个下午调试 FreeTos 的内存管理。 It felt like dealing with a group of unruly children.我记得那是2015年,我在南京的一个项目组。当时项目组的兄弟们忙着集成FreeTos,我负责记忆。
当时我们遇到了一个问题:任务堆栈溢出。如您所知,FreeTos的任务堆栈是由操作系统动态管理的。如果分配不当,很容易导致溢出。记得那天,我坐在电脑前,从几个字节到几十个字节反复调试,最终确定了每个任务的堆栈大小。
因此,经过调整后,系统的稳定性和响应速度得到了很大的提高。当时项目组的领导特别表扬了我。但是等等,我突然想到,经过那次调整,我们的项目组也节省了很多额外的内存。
话虽如此,Freertos的内存管理确实很微妙。你必须找到一个平衡点,既不能太浪费,也不能太小而影响性能。但具体细节仍需具体情况具体分析。你怎么认为?您是否遇到过类似的情况?
那一年,我在公司做一个项目,项目中使用的是freertos。我对这些东西很陌生,我的头开始旋转。记得有一次,为了提高内存管理,我花了两天时间研究freertos的内存分配策略。
当时我们的项目运行在特定的机器上,内存非常紧张,每个字节都要仔细计数。我查阅了很多文档,参加了免费培训课程,终于找到了内存管理的窍门。
具体来说,我采取了以下操作:首先,我修改了堆配置,减小了堆大小;其次,改进任务栈的使用,保证每个任务的栈大小合理;最后,使用动态内存池来缓存一些常用的数据结构,减少动态分配的次数。
效果还是不错的。项目成功通过测试,内存占用降低20%。等等,我突然想到,当时我确实很累,但是我也学到了很多东西。不过freertos的内存管理还是有点复杂,需要仔细考虑。
Freertos的内存管理,动态分配效率低下,静态分配更稳定。
这是一个陷阱。不要相信动态分配。
静态赋值,例如B.使用heap_4可以避免碎片。
不要这样做,因为在动态分配期间heap_4被频繁调用。
实用提醒:优先分配静态内存,保证系统稳定性。
Freertos内存管理:动态内存分配效率低下,静态分配更稳定。
这里有一个陷阱:动态分配可能会导致内存碎片。
不信:在 freertos 中不推荐动态内存分配。
不要这样做:更喜欢静态内存分配。