当前位置: 首页 -  必威体育 - 正文

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

2020-06-28 14:29 必威体育 诗涵68°c
A+ A-

下面举个例子说明。

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

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

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

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

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

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

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

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

%CPU %MEM CMD RSS RSZ VSZ TRS

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

%CPU %MEM CMD RSS RSZ VSZ TRS

执行 dlclose()后:

%CPU %MEM CMD RSS RSZ VSZ TRS

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

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

dlopen()执行后:

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

打开gdb,执行 gdb test,

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

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

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

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

dlclose()后:

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

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

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

%CPU %MEM CMD RSS RSZ VSZ TRS

%CPU %MEM CMD RSS RSZ VSZ TRS