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

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

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

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

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

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

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


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

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

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


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

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

實(shí)例:


pYYBAGMkSNeAZrq3AABy6MLToQ8052.jpg

運(yùn)行:

gccmemory.c && a.out

查看屬性:

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

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

我嘗試說下幾個(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)存出來再加上MemFree就等于MemAvailable,應(yīng)用程序就可以判斷這個(gè)數(shù)值判斷自己應(yīng)該申請的內(nèi)存空間。



審核編輯:劉清

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

    關(guān)注

    0

    文章

    142

    瀏覽量

    19483
  • Cache
    +關(guān)注

    關(guān)注

    0

    文章

    129

    瀏覽量

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

    關(guān)注

    0

    文章

    78

    瀏覽量

    3338

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

    我發(fā)現(xiàn)用espconn_abort函數(shù)斷開ssl連接,會導(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)通過隨附的代碼驗(yàn)證了當(dāng)發(fā)生 SSL 握手錯(cuò)誤時(shí),會生成內(nèi)存泄漏 此外,espconn_reconnect_callback不稱為信令ESPCONN_HANDSHAKE - TCP SSL 握手
    發(fā)表于 07-18 07:24

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

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

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

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

    內(nèi)存溢出與內(nèi)存泄漏:定義、區(qū)別與解決方案

    內(nèi)存溢出與內(nèi)存泄漏:定義、區(qū)別與解決方案? 內(nèi)存溢出和內(nèi)存泄漏是計(jì)算機(jī)科學(xué)中常見的問題,在開發(fā)和
    的頭像 發(fā)表于 12-19 14:10 ?2168次閱讀

    內(nèi)存泄漏有什么影響

    用malloc申請的內(nèi)存,沒有釋放,為什么程序也不會出錯(cuò)?
    的頭像 發(fā)表于 12-07 09:42 ?560次閱讀
    <b class='flag-5'>內(nèi)存</b><b class='flag-5'>泄漏</b>有什么影響

    jmap dump內(nèi)存的命令是

    空間的詳細(xì)信息的文件。通過分析堆內(nèi)存快照,可以幫助我們進(jìn)行內(nèi)存泄漏和性能問題的定位和分析,以及優(yōu)化代碼和內(nèi)存使用。 使用jmap dump命令生成堆
    的頭像 發(fā)表于 12-05 10:38 ?2908次閱讀

    字符數(shù)組和字符串有沒有區(qū)別?

    字符數(shù)組和字符串有沒有區(qū)別?
    的頭像 發(fā)表于 11-30 16:39 ?559次閱讀

    如何發(fā)現(xiàn)內(nèi)存泄漏

    檢測兩個(gè)角度介紹在 Linux 環(huán)境進(jìn)行內(nèi)存泄漏檢測的方法,并重點(diǎn)介紹靜態(tài)分析工具 BEAM、動態(tài)監(jiān)測工具 Valgrind 和 rational purify 的使用方法。相信通過本文的介紹,能給大家對處理其它產(chǎn)品或項(xiàng)目內(nèi)存
    的頭像 發(fā)表于 11-13 15:41 ?534次閱讀

    線程內(nèi)存泄漏問題的定位

    在下降。確定內(nèi)存泄漏確實(shí)存在。top中可以顯示多種形式內(nèi)存,進(jìn)而可以判斷是那種泄漏。比如vss/rss/pss等。 確定哪個(gè)進(jìn)程
    的頭像 發(fā)表于 11-13 11:38 ?554次閱讀
    線程<b class='flag-5'>內(nèi)存</b><b class='flag-5'>泄漏</b>問題的定位

    如何寫一個(gè)內(nèi)存泄漏檢測工具

    如何確定有內(nèi)存泄露問題,如何定位到內(nèi)存泄露位置,如何寫一個(gè)內(nèi)存泄漏檢測工具? 1:概述 內(nèi)存泄露本質(zhì):其實(shí)就是申請調(diào)用malloc/new,
    的頭像 發(fā)表于 11-11 16:19 ?759次閱讀

    內(nèi)存泄漏會產(chǎn)生哪些后果

    ,只釋放了p1,沒有釋放p2,產(chǎn)生了內(nèi)存泄漏內(nèi)存泄漏會產(chǎn)生哪些后果? 隨著程序運(yùn)行時(shí)間越來越久,內(nèi)存
    的頭像 發(fā)表于 11-10 15:06 ?735次閱讀
    <b class='flag-5'>內(nèi)存</b><b class='flag-5'>泄漏</b>會產(chǎn)生哪些后果

    內(nèi)存泄漏如何避免

    1. 內(nèi)存溢出 內(nèi)存溢出 OOM (out of memory),是指程序在申請內(nèi)存時(shí),沒有足夠的內(nèi)存空間供其使用,
    的頭像 發(fā)表于 11-10 11:04 ?673次閱讀
    <b class='flag-5'>內(nèi)存</b><b class='flag-5'>泄漏</b>如何避免

    什么是頻譜泄漏?為什么會出現(xiàn)頻譜泄漏?如何最小化頻譜泄漏?

    在數(shù)字信號處理領(lǐng)域,快速傅里葉變換(FFT)可以說是其核心內(nèi)容之一。在利用FFT分析信號頻譜的過程中,不可避免地會出現(xiàn)頻譜泄漏現(xiàn)象,因此,我們所觀察到的信號頻譜只是其真實(shí)頻譜的近似,為了減少二者之間
    的頭像 發(fā)表于 11-03 18:08 ?1.3w次閱讀
    什么是頻譜<b class='flag-5'>泄漏</b>?為什么會<b class='flag-5'>出現(xiàn)</b>頻譜<b class='flag-5'>泄漏</b>?如何最小化頻譜<b class='flag-5'>泄漏</b>?