0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式系统节省内存的解决方法

如意 来源:CSDN 作者:CaspianSea 2020-06-28 11:57 次阅读

嵌入式系统内存往往是有限制的(成本考虑),因此需要尽量支持更多的功能,同时尽量减少使用的内存。

一种方法是把需要支持的功能做成共享库的形式,需要这个功能的时候加载共享库,不需要的时候卸载共享库,从而把内存释放出来。

下面举个例子说明。

嵌入式系统节省内存的解决方法

$ gcc 1.c -shared -fpic -g -o lib1.so

嵌入式系统节省内存的解决方法

$ gcc test.c -g -o test -ldl -l1 -L.

打开gdb,执行 gdb test,

在dlopen执行前,程序内存使用:

$ ps -p $(pidof test) -o %cpu,%mem,cmd,rss,rsz,vsz,trs

%CPU %MEM CMD RSS RSZ VSZ TRS

0.0 0.0 /home/charles/tmp/test 696 696 2084 1

dlopen()执行后:

$ ps -p $(pidof test) -o %cpu,%mem,cmd,rss,rsz,vsz,trs

%CPU %MEM CMD RSS RSZ VSZ TRS

0.0 1.0 /home/charles/tmp/test 42000 42000 43192 1

dlclose()后:

ps -p $(pidof test) -o %cpu,%mem,cmd,rss,rsz,vsz,trs

%CPU %MEM CMD RSS RSZ VSZ TRS

0.0 0.0 /home/charles/tmp/test 1092 1092 2216 1

可以看到,大部分用到的内存都释放掉了。

然后如果执行下一次循环, dlopen()后:

$ ps -p $(pidof test) -o %cpu,%mem,cmd,rss,rsz,vsz,trs

%CPU %MEM CMD RSS RSZ VSZ TRS

0.0 1.0 /home/charles/tmp/test 42008 42008 43192 1

执行 dlclose()后:

$ ps -p $(pidof test) -o %cpu,%mem,cmd,rss,rsz,vsz,trs

%CPU %MEM CMD RSS RSZ VSZ TRS

0.0 0.0 /home/charles/tmp/test 1092 1092 2216

内存又恢复到上次的数值了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5068

    文章

    19008

    浏览量

    302990
  • 内存
    +关注

    关注

    8

    文章

    2996

    浏览量

    73869
收藏 人收藏

    评论

    相关推荐

    windowsXP系统如何节省内存方法

    windowsXP系统如何节省内存方法  XP系统节省内存,加快开机速度的方法如下:1.禁用压
    发表于 02-26 15:40

    嵌入式系统内存管理

    。 B、UCOS的内存管理:UCOS的内存管理与大多数嵌入式系统一样,是flat内存,但在此flat
    发表于 09-17 19:40

    嵌入式系统交叉调试原理和方法

    代理、串口驱动或者TCP/IP驱动需要占用大量的内存空间,因此该方法一般用于内存资源比较丰富的嵌入式系统的调试。
    发表于 12-18 10:55

    Linux嵌入式系统初学者的常见问题解决方法大全

    该文档为Linux嵌入式系统初学者的常见问题解决方法大全(Linux学习指引篇)讲解文档,是一份不错的参考资料,感兴趣的可以下载看看
    发表于 10-16 16:12

    优秀的嵌入式程序有什么特点?

    大家都来说说,优秀的嵌入式程序应该遵循哪些特点。优秀的嵌入式程序特点:1、增加debug开关,便于调试。2、增加一些宏定义、伪编译,便于调试。3、*.h文件,*.c文件与main.c分开,使用时用
    发表于 03-13 06:53

    嵌入式系统内存优化使用

    响应运行。并且经过实践证明,嵌入式系统内存优化使用,能够提升系统空间5%内存,确保系统顺利运行。
    发表于 11-04 06:23

    怎么设计嵌入式系统内存管理

    系列文章:一篇讲透嵌入式操作系统任务调度从需求反推设计方案,假如让你设计嵌入式系统内存管理,你怎么设计?最简单的,用一个双链表控制,所有已
    发表于 12-17 06:54

    单片机开发之节省内存大法

    提点一下,我一说估计很多人都清楚了,不过时间久了一些简单的知识没有去使用或者重温,到了解决问题的时候还是容易卡壳,如果还没有看过以前文章的可以到下面链接看看:☞单片机开发之节省内存大法(...
    发表于 01-25 07:08

    嵌入式系统的设计方法

    嵌入式系统的设计方法嵌入式系统的C程序设计开始讲,一步步深入。
    发表于 03-28 09:45 38次下载

    嵌入式系统内存管理方案研究

    摘要:嵌入式系统内存管理机制必须满足实时性和可靠性的要求。本文以开源的的操作系统RTEMS为例,介绍嵌入式
    发表于 05-24 23:57 1145次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b><b class='flag-5'>内存</b>管理方案研究

    [学习嵌入式]嵌入式系统学习方法,轻松入门嵌入式

    [学习嵌入式]嵌入式系统学习方法,轻松入门嵌入式
    发表于 03-28 15:29 79次下载

    嵌入式操作系统FreeRTOS内存如何管理和堆

    嵌入式操作系统FreeRTOS内存管理和堆
    的头像 发表于 01-10 15:17 4637次阅读
    <b class='flag-5'>嵌入式</b>操作<b class='flag-5'>系统</b>FreeRTOS<b class='flag-5'>内存</b>如何管理和堆

    嵌入式系统内存指针操作

    嵌入式系统中,对内存地址的操作是一个重要的方面,从广义上讲,嵌入式系统的地址空间可以分成以下三种类型:
    的头像 发表于 08-27 11:33 6153次阅读

    嵌入式linux+io+优化,嵌入式Linux系统内存优化使用方法研究

    优化进而确保响应运行。并且经过实践证明,嵌入式系统内存优化使用,能够提升系统空间5%内存,确保系统
    发表于 11-01 16:31 10次下载
    <b class='flag-5'>嵌入式</b>linux+io+优化,<b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>系统</b><b class='flag-5'>内存</b>优化使用<b class='flag-5'>方法</b>研究

    如何通过设计模式来节省内存

    相信大家日常开发过程中,一个优秀的程序猿写出的代码一定要节省空间的,比如节省内存节省磁盘等等。那么如何通过设计模式来节省内存呢? 1、什么是享元模式? Use sharing to
    的头像 发表于 10-09 10:31 501次阅读
    如何通过设计模式来<b class='flag-5'>节省内存</b>