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

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

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

怎么確認(rèn)某個(gè)進(jìn)程有沒有出現(xiàn)內(nèi)存泄漏

工程師鄧生 ? 來(lái)源:嵌入式Linux ? 作者:山岳 ? 2022-09-16 17:57 ? 次閱讀

是今天和朋友討論的問(wèn)題,用free看到的內(nèi)存在減少,但是看/proc/meminfo 的可用內(nèi)存卻沒有減少,但是實(shí)際情況是他們的應(yīng)用跑著跑著內(nèi)存最后就消耗完了,難搞的是復(fù)現(xiàn)需要十來(lái)天。

f55eb614-3576-11ed-ba43-dac502259ad0.png


f578da26-3576-11ed-ba43-dac502259ad0.png

meminfo里面的memavailable 屬性表示的是可以用的內(nèi)存大小,它是估計(jì)出來(lái)的值,并不是一個(gè)準(zhǔn)確值。

f5985702-3576-11ed-ba43-dac502259ad0.png ?


那如果我想確認(rèn)某個(gè)進(jìn)程有沒有出現(xiàn)內(nèi)存泄漏,我要怎么確認(rèn)? 這類問(wèn)題我一般是遇到的時(shí)候才會(huì)去分析,進(jìn)程一般會(huì)有自己的進(jìn)程號(hào),比較簡(jiǎn)單的辦法就是用top -p進(jìn)程號(hào)判斷。

也可以去看/proc//status里面的VMRSS屬性

實(shí)例:


pYYBAGMkSNeAZrq3AABy6MLToQ8052.jpg

運(yùn)行:

gccmemory.c && a.out

查看屬性:

f5f32498-3576-11ed-ba43-dac502259ad0.png

free 看到的內(nèi)存信息是從meminfo里面解析出來(lái)的,所以要看系統(tǒng)的具體內(nèi)存占用,還是要看meminfo,但是meminfo里面有很多很多屬性,很少有人能夠非常明白的說(shuō)明清楚。

我嘗試說(shuō)下幾個(gè)通常見到的

MemTotal

這是內(nèi)存條大小的容量,但是我們往往看到這個(gè)值和我們的內(nèi)存條大小不同,比如,硬件設(shè)計(jì)的時(shí)候告訴我們使用的內(nèi)存條大小是2GB,實(shí)際上這里可能不是2GB,那是因?yàn)橄到y(tǒng)是開機(jī)的時(shí)候在bootloader,或者其他部分占用了一部分。

f960c7c0-3576-11ed-ba43-dac502259ad0.png

MemFree

系統(tǒng)剩余內(nèi)存大小,MemTotal - MemFree 就是已經(jīng)使用的內(nèi)存大小。

MemAvailable

這是一個(gè)估算值,并不是精確值。

我們看到的剩余內(nèi)存MemFree大小,并不是我們系統(tǒng)應(yīng)用程序可以分配的內(nèi)存大小,系統(tǒng)中存在的緩存cache/buffer、slab回收內(nèi)存系統(tǒng)可以從其他地方摳一些內(nèi)存出來(lái)再加上MemFree就等于MemAvailable,應(yīng)用程序就可以判斷這個(gè)數(shù)值判斷自己應(yīng)該申請(qǐng)的內(nèi)存空間。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • 內(nèi)存條
    +關(guān)注

    關(guān)注

    0

    文章

    145

    瀏覽量

    19544
  • Cache
    +關(guān)注

    關(guān)注

    0

    文章

    129

    瀏覽量

    28363
  • gcc編譯器
    +關(guān)注

    關(guān)注

    0

    文章

    78

    瀏覽量

    3399

原文標(biāo)題:我的內(nèi)存去哪了?

文章出處:【微信號(hào):嵌入式與Linux那些事,微信公眾號(hào):嵌入式與Linux那些事】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    虛擬內(nèi)存溢出該怎么處理 虛擬內(nèi)存在服務(wù)器中的應(yīng)用

    在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,虛擬內(nèi)存是一種重要的資源管理技術(shù),它允許系統(tǒng)使用硬盤空間來(lái)擴(kuò)展物理內(nèi)存的容量。然而,當(dāng)系統(tǒng)運(yùn)行的程序和進(jìn)程超出了物理內(nèi)存和虛擬內(nèi)
    的頭像 發(fā)表于 12-04 09:49 ?185次閱讀

    什么是泄漏電流試驗(yàn)?

    泄漏電流的概念泄漏電流(leakagecurrent)也叫接觸電流,是指在沒有故障施加電壓的情況下,電氣中相互絕緣的金屬零件之間,或帶電零件與接地零件之間,通過(guò)其周圍介質(zhì)或絕緣表面所形成的電流。
    的頭像 發(fā)表于 11-26 11:48 ?394次閱讀
    什么是<b class='flag-5'>泄漏</b>電流試驗(yàn)?

    內(nèi)存管理的硬件結(jié)構(gòu)

    常見的內(nèi)存分配函數(shù)有malloc,mmap等,但大家有沒有想過(guò),這些函數(shù)在內(nèi)核中是怎么實(shí)現(xiàn)的?換句話說(shuō),Linux內(nèi)核的內(nèi)存管理是怎么實(shí)現(xiàn)的?
    的頭像 發(fā)表于 09-04 14:28 ?337次閱讀
    <b class='flag-5'>內(nèi)存</b>管理的硬件結(jié)構(gòu)

    LM393輸入電流有沒有限制?在輸入腳輸入3mA的電流進(jìn)去有沒有問(wèn)題?

    在使用LM393時(shí),請(qǐng)幫忙確認(rèn)下是否可以? 1)LM393輸入電流有沒有限制?在輸入腳輸入3mA的電流進(jìn)去有沒有問(wèn)題? 2)如附件電路圖,可以理解為3.3V經(jīng)過(guò)1.5K的電阻直接進(jìn)去LM393的3腳,看看
    發(fā)表于 08-19 08:06

    如何檢測(cè)內(nèi)存泄漏

    檢測(cè)內(nèi)存泄漏是軟件開發(fā)過(guò)程中一項(xiàng)至關(guān)重要的任務(wù),它有助于識(shí)別和解決那些導(dǎo)致程序占用過(guò)多內(nèi)存資源,從而影響程序性能甚至導(dǎo)致程序崩潰的問(wèn)題。以下將詳細(xì)闡述幾種常見的內(nèi)存
    的頭像 發(fā)表于 07-30 11:50 ?2034次閱讀

    求助,有沒有espconn_secure_abort函數(shù)?

    我發(fā)現(xiàn)用espconn_abort函數(shù)斷開ssl連接,會(huì)導(dǎo)致內(nèi)存泄漏,有沒有espconn_secure_abort函數(shù)?
    發(fā)表于 07-22 08:05

    NONOS 1.5.3/1.5.4 SSL內(nèi)存泄漏的原因?

    我已經(jīng)通過(guò)隨附的代碼驗(yàn)證了當(dāng)發(fā)生 SSL 握手錯(cuò)誤時(shí),會(huì)生成內(nèi)存泄漏 此外,espconn_reconnect_callback不稱為信令ESPCONN_HANDSHAKE - TCP SSL 握手
    發(fā)表于 07-18 07:24

    使用system_show_malloc()檢查內(nèi)存泄漏遇到異常怎么解決?

    我想使用system_show_malloc()檢查內(nèi)存泄漏,但是當(dāng)我調(diào)用該函數(shù)時(shí),我得到了致命的異常: 致命異常 28 (LoadProhibitedCause): epc1
    發(fā)表于 07-10 06:32

    linux下查詢進(jìn)程占用的內(nèi)存方法有哪些?

    linux下查詢進(jìn)程占用的內(nèi)存方法
    發(fā)表于 04-08 06:03

    有沒有什么辦法能重置DMA轉(zhuǎn)移數(shù)據(jù)到內(nèi)存的指針?

    有沒有什么辦法能重置DMA轉(zhuǎn)移數(shù)據(jù)到內(nèi)存的指針,看芯片手冊(cè)沒找到相關(guān)功能的寄存器,就比如用DMA接收串口數(shù)據(jù),本來(lái)固定接收100個(gè),某次只發(fā)了50個(gè)就斷開了,這時(shí)候就需要把DAM數(shù)據(jù)轉(zhuǎn)移的指針重置一下
    發(fā)表于 03-26 06:14

    C語(yǔ)言內(nèi)存泄漏問(wèn)題原理

    內(nèi)存泄漏問(wèn)題只有在使用堆內(nèi)存的時(shí)候才會(huì)出現(xiàn),棧內(nèi)存不存在內(nèi)存
    發(fā)表于 03-19 11:38 ?537次閱讀
    C語(yǔ)言<b class='flag-5'>內(nèi)存</b><b class='flag-5'>泄漏</b>問(wèn)題原理

    【鴻蒙】webview內(nèi)存泄漏問(wèn)題的分析報(bào)告

    1 關(guān)鍵字 webview;內(nèi)存泄漏 2 問(wèn)題描述 問(wèn)題現(xiàn)象:在 3.1release 版本和 3.2bete1 版本中,在 RK3568 上使用 etsWeb 和其他瀏覽器時(shí),webview 所占
    的頭像 發(fā)表于 03-02 15:12 ?2179次閱讀

    貼片功率電感究竟有沒有正負(fù)極之分

    電子發(fā)燒友網(wǎng)站提供《貼片功率電感究竟有沒有正負(fù)極之分.docx》資料免費(fèi)下載
    發(fā)表于 02-28 10:15 ?0次下載

    PSoC Creator有沒有內(nèi)存對(duì)齊方式的設(shè)置?

    使用PSoC4開發(fā)的時(shí)候發(fā)現(xiàn)ROM不夠了,想做下優(yōu)化,PSoC Creator有沒有內(nèi)存對(duì)齊方式的設(shè)置,比如說(shuō)把對(duì)齊方式從4Byte改為2Byte?
    發(fā)表于 02-18 08:03

    拆解mmap內(nèi)存映射的本質(zhì)!

    mmap 進(jìn)行文件映射的時(shí)候,是將進(jìn)程虛擬內(nèi)存空間中的某一段虛擬內(nèi)存區(qū)域與磁盤中某個(gè)文件中的某段區(qū)域進(jìn)行映射。
    的頭像 發(fā)表于 01-24 14:30 ?1802次閱讀
    拆解mmap<b class='flag-5'>內(nèi)存</b>映射的本質(zhì)!