嵌入式系統(tǒng)內存往往是有限制的(成本考慮),因此需要盡量支持更多的功能,同時盡量減少使用的內存。
一種方法是把需要支持的功能做成共享庫的形式,需要這個功能的時候加載共享庫,不需要的時候卸載共享庫,從而把內存釋放出來。
下面舉個例子說明。
$ gcc 1.c -shared -fpic -g -o lib1.so
$ gcc test.c -g -o test -ldl -l1 -L.
打開gdb,執(zhí)行 gdb test,
在dlopen執(zhí)行前,程序內存使用:
$ 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()執(zhí)行后:
$ 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
可以看到,大部分用到的內存都釋放掉了。
然后如果執(zhí)行下一次循環(huán), 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
執(zhí)行 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
內存又恢復到上次的數(shù)值了。
-
嵌入式
+關注
關注
5105文章
19288瀏覽量
310192 -
內存
+關注
關注
8文章
3081瀏覽量
74604
發(fā)布評論請先 登錄
相關推薦
windowsXP系統(tǒng)如何節(jié)省內存的方法
嵌入式系統(tǒng)交叉調試原理和方法
Linux嵌入式系統(tǒng)初學者的常見問題解決方法大全
優(yōu)秀的嵌入式程序有什么特點?
嵌入式系統(tǒng)內存優(yōu)化使用
單片機開發(fā)之節(jié)省內存大法
嵌入式系統(tǒng)內存管理方案研究

嵌入式系統(tǒng)的內存指針操作
嵌入式linux+io+優(yōu)化,嵌入式Linux系統(tǒng)內存優(yōu)化使用方法研究

如何通過設計模式來節(jié)省內存

評論