嵌入式系统内存往往是有限制的(成本考虑),因此需要尽量支持更多的功能,同时尽量减少使用的内存。
一种方法是把需要支持的功能做成共享库的形式,需要这个功能的时候加载共享库,不需要的时候卸载共享库,从而把内存释放出来。
下面举个例子说明。

$ 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
内存又恢复到上次的数值了。
-
嵌入式
+关注
关注
5186文章
20146浏览量
328771 -
内存
+关注
关注
9文章
3173浏览量
76113
发布评论请先 登录
Linux嵌入式系统初学者的常见问题解决方法大全
优秀的嵌入式程序有什么特点?
单片机开发之节省内存大法
嵌入式linux+io+优化,嵌入式Linux系统内存优化使用方法研究
如何通过设计模式来节省内存

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