首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >减少RAM消耗的良好实现实践是什么?

减少RAM消耗的良好实现实践是什么?
EN

Stack Overflow用户
提问于 2013-08-02 14:05:51
回答 2查看 163关注 0票数 0

我在一个基于arm的Linux设备上运行一个C代码,它有一个很小的RAM空间(16 on )。我的代码经常被“内存不足”消息的内核杀死(SIGKILL)。我运行的程序与瓦兰,它看起来不存在内存泄漏。我也使用gdb运行代码,但无法识别代码上的任何错误。我将尝试优化我的代码,多次通过它。

一般来说,代码上的良好实现实践是什么,以尽量减少内存的使用?

  • 一种可能是尽可能多地使用函数(?),但我想gcc已经优化了代码,以减少源代码的使用。
  • 避免动态内存分配
  • 还有什么?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-02 14:11:16

注意对象的范围。确保在不再需要对象之后处理内存取消分配。我不太明白你的use functions as much as possible(?)。函数需要开销,每个调用都会占用一些额外的内存,因为它必须在调用堆栈上存储一些指针和一些有关方法的信息。因此,尽管这可能有助于保持源代码的整洁--但它不会降低您的内存使用量(可能会增加内存使用量)。在C中获得最佳效果的一种方法是使用inline函数--这意味着编译器不应该创建实际的函数,而是将代码块插入到任何使用它的地方。请记住,高效的代码通常具有更多的机器级别(意味着重复、指针,通常还有开发人员管理的数组索引),而不是利用广泛的用途,功能丰富的对象。但是,感谢聪明的编译器,所以您不必知道每一个优化。但是,在较低级别的语言(如c )中,由于它赋予了您操作一切的能力,因此您需要小心,以免犯代价高昂的错误。

票数 1
EN

Stack Overflow用户

发布于 2013-08-02 14:46:24

如果您在Linux上有这样的问题,您可以禁用超额提交内存。它将确保所有分配的内存都有物理内存。内核将不太可能杀死您的程序。然后,一定要测试所有错误的结果,因为当您不再有内存时,它们将在某个时候失败。您可以在这里找到更多信息:http://www.etalabs.net/overcommit.html

您还可以禁用嵌入式系统上的一些程序来释放内存。可能你不使用cron,或者在启动时不需要6个TTY。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18018923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档