0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

嵌入式系統(tǒng)節(jié)省內(nèi)存的解決方法

如意 ? 來(lái)源:CSDN ? 作者:CaspianSea ? 2020-06-28 11:57 ? 次閱讀

嵌入式系統(tǒng)內(nèi)存往往是有限制的(成本考慮),因此需要盡量支持更多的功能,同時(shí)盡量減少使用的內(nèi)存。

一種方法是把需要支持的功能做成共享庫(kù)的形式,需要這個(gè)功能的時(shí)候加載共享庫(kù),不需要的時(shí)候卸載共享庫(kù),從而把內(nèi)存釋放出來(lái)。

下面舉個(gè)例子說(shuō)明。

嵌入式系統(tǒng)節(jié)省內(nèi)存的解決方法

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

嵌入式系統(tǒng)節(jié)省內(nèi)存的解決方法

$ 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ù)值了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5046

    文章

    18817

    瀏覽量

    298535
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    2903

    瀏覽量

    73536
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    windowsXP系統(tǒng)如何節(jié)省內(nèi)存方法

    windowsXP系統(tǒng)如何節(jié)省內(nèi)存方法  XP系統(tǒng)節(jié)省內(nèi)存,加快開(kāi)機(jī)速度的方法如下:1.禁用壓
    發(fā)表于 02-26 15:40

    嵌入式系統(tǒng)內(nèi)存管理

    。 B、UCOS的內(nèi)存管理:UCOS的內(nèi)存管理與大多數(shù)嵌入式系統(tǒng)一樣,是flat內(nèi)存,但在此flat內(nèi)
    發(fā)表于 09-17 19:40

    嵌入式系統(tǒng)交叉調(diào)試原理和方法

    代理、串口驅(qū)動(dòng)或者TCP/IP驅(qū)動(dòng)需要占用大量的內(nèi)存空間,因此該方法一般用于內(nèi)存資源比較豐富的嵌入式系統(tǒng)的調(diào)試。
    發(fā)表于 12-18 10:55

    Linux嵌入式系統(tǒng)初學(xué)者的常見(jiàn)問(wèn)題解決方法大全

    該文檔為L(zhǎng)inux嵌入式系統(tǒng)初學(xué)者的常見(jiàn)問(wèn)題解決方法大全(Linux學(xué)習(xí)指引篇)講解文檔,是一份不錯(cuò)的參考資料,感興趣的可以下載看看
    發(fā)表于 10-16 16:12

    優(yōu)秀的嵌入式程序有什么特點(diǎn)?

    大家都來(lái)說(shuō)說(shuō),優(yōu)秀的嵌入式程序應(yīng)該遵循哪些特點(diǎn)。優(yōu)秀的嵌入式程序特點(diǎn):1、增加debug開(kāi)關(guān),便于調(diào)試。2、增加一些宏定義、偽編譯,便于調(diào)試。3、*.h文件,*.c文件與main.c分開(kāi),使用時(shí)用
    發(fā)表于 03-13 06:53

    嵌入式系統(tǒng)內(nèi)存優(yōu)化使用

    響應(yīng)運(yùn)行。并且經(jīng)過(guò)實(shí)踐證明,嵌入式系統(tǒng)內(nèi)存優(yōu)化使用,能夠提升系統(tǒng)空間5%內(nèi)存,確保系統(tǒng)順利運(yùn)行。
    發(fā)表于 11-04 06:23

    怎么設(shè)計(jì)嵌入式系統(tǒng)內(nèi)存管理

    系列文章:一篇講透嵌入式操作系統(tǒng)任務(wù)調(diào)度從需求反推設(shè)計(jì)方案,假如讓你設(shè)計(jì)嵌入式系統(tǒng)內(nèi)存管理,你怎么設(shè)計(jì)?最簡(jiǎn)單的,用一個(gè)雙鏈表控制,所有已
    發(fā)表于 12-17 06:54

    單片機(jī)開(kāi)發(fā)之節(jié)省內(nèi)存大法

    提點(diǎn)一下,我一說(shuō)估計(jì)很多人都清楚了,不過(guò)時(shí)間久了一些簡(jiǎn)單的知識(shí)沒(méi)有去使用或者重溫,到了解決問(wèn)題的時(shí)候還是容易卡殼,如果還沒(méi)有看過(guò)以前文章的可以到下面鏈接看看:?單片機(jī)開(kāi)發(fā)之節(jié)省內(nèi)存大法(...
    發(fā)表于 01-25 07:08

    嵌入式系統(tǒng)的設(shè)計(jì)方法

    嵌入式系統(tǒng)的設(shè)計(jì)方法嵌入式系統(tǒng)的C程序設(shè)計(jì)開(kāi)始講,一步步深入。
    發(fā)表于 03-28 09:45 ?38次下載

    嵌入式系統(tǒng)內(nèi)存管理方案研究

    摘要:嵌入式系統(tǒng)內(nèi)存管理機(jī)制必須滿足實(shí)時(shí)性和可靠性的要求。本文以開(kāi)源的的操作系統(tǒng)RTEMS為例,介紹嵌入式
    發(fā)表于 05-24 23:57 ?1107次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)</b><b class='flag-5'>內(nèi)存</b>管理方案研究

    [學(xué)習(xí)嵌入式]嵌入式系統(tǒng)學(xué)習(xí)方法,輕松入門嵌入式

    [學(xué)習(xí)嵌入式]嵌入式系統(tǒng)學(xué)習(xí)方法,輕松入門嵌入式
    發(fā)表于 03-28 15:29 ?79次下載

    嵌入式操作系統(tǒng)FreeRTOS內(nèi)存如何管理和堆

    嵌入式操作系統(tǒng)FreeRTOS內(nèi)存管理和堆
    的頭像 發(fā)表于 01-10 15:17 ?4547次閱讀
    <b class='flag-5'>嵌入式</b>操作<b class='flag-5'>系統(tǒng)</b>FreeRTOS<b class='flag-5'>內(nèi)存</b>如何管理和堆

    嵌入式系統(tǒng)內(nèi)存指針操作

    嵌入式系統(tǒng)中,對(duì)內(nèi)存地址的操作是一個(gè)重要的方面,從廣義上講,嵌入式系統(tǒng)的地址空間可以分成以下三種類型:
    的頭像 發(fā)表于 08-27 11:33 ?5985次閱讀

    嵌入式linux+io+優(yōu)化,嵌入式Linux系統(tǒng)內(nèi)存優(yōu)化使用方法研究

    優(yōu)化進(jìn)而確保響應(yīng)運(yùn)行。并且經(jīng)過(guò)實(shí)踐證明,嵌入式系統(tǒng)內(nèi)存優(yōu)化使用,能夠提升系統(tǒng)空間5%內(nèi)存,確保系統(tǒng)
    發(fā)表于 11-01 16:31 ?10次下載
    <b class='flag-5'>嵌入式</b>linux+io+優(yōu)化,<b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>內(nèi)存</b>優(yōu)化使用<b class='flag-5'>方法</b>研究

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

    相信大家日常開(kāi)發(fā)過(guò)程中,一個(gè)優(yōu)秀的程序猿寫(xiě)出的代碼一定要節(jié)省空間的,比如節(jié)省內(nèi)存,節(jié)省磁盤(pán)等等。那么如何通過(guò)設(shè)計(jì)模式來(lái)節(jié)省內(nèi)存呢? 1、什么是享元模式? Use sharing to
    的頭像 發(fā)表于 10-09 10:31 ?438次閱讀
    如何通過(guò)設(shè)計(jì)模式來(lái)<b class='flag-5'>節(jié)省內(nèi)存</b>