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

[學(xué)習(xí)嵌入式]嵌入式系統(tǒng)學(xué)習(xí)方法,輕松入門(mén)嵌入式
嵌入式系統(tǒng)的內(nèi)存指針操作
嵌入式linux+io+優(yōu)化,嵌入式Linux系統(tǒng)內(nèi)存優(yōu)化使用方法研究

如何通過(guò)設(shè)計(jì)模式來(lái)節(jié)省內(nèi)存

評(píng)論