国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux C/C++ 程序內(nèi)存泄露排查

這篇具有很好參考價值的文章主要介紹了Linux C/C++ 程序內(nèi)存泄露排查。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

由于C/C++程序可以動態(tài)申請內(nèi)存,動態(tài)申請的內(nèi)存位于程序的隊區(qū),如果程序比較復(fù)雜,程序員在編寫代碼的時候不小心,可能會存在申請了內(nèi)存沒有釋放的情況,程序長期運行,會導(dǎo)致系統(tǒng)中用戶程序可分配堆內(nèi)存越來越少的,最終程序OOM崩潰。

Linux系統(tǒng)內(nèi)存泄露檢查

系統(tǒng)內(nèi)存監(jiān)控

/proc/meminfo 文件保存了系統(tǒng)內(nèi)存使用情況,

MemTotal:       498364224 kB
MemFree:        341371712 kB
MemAvailable:   431430528 kB
Buffers:            3456 kB
Cached:         89801856 kB
SwapCached:            0 kB
Active:         36263872 kB
Inactive:       78312192 kB
Active(anon):   24965120 kB
Inactive(anon):   212352 kB
Active(file):   11298752 kB
Inactive(file): 78099840 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       4194240 kB
SwapFree:        4194240 kB
Dirty:               512 kB
Writeback:             0 kB
AnonPages:      24776320 kB
Mapped:           157504 kB
Shmem:            406720 kB
Slab:           11619072 kB
SReclaimable:    3734336 kB
SUnreclaim:      7884736 kB
KernelStack:       34128 kB
PageTables:        69632 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    240269120 kB
Committed_AS:   59814336 kB
VmallocTotal:   549755813888 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
CmaTotal:       25165824 kB
CmaFree:        25165824 kB
HugePages_Total:   12800
HugePages_Free:    12800
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

其中 MemAvailable 可以用來評估系統(tǒng)當前應(yīng)用程序可用的內(nèi)存,定時監(jiān)控該數(shù)據(jù)并顯示出來便可得到系統(tǒng)內(nèi)存使用曲線。

進程內(nèi)存監(jiān)控

系統(tǒng)可用內(nèi)存一直減少時,說明系統(tǒng)中正在運行的程序有內(nèi)存泄露,但還需要進一步確定是哪個程序在泄露。
/proc/{pid}/cmdline 里面記錄了某一個進程(進程號為pid)的啟動名稱,這個名稱就是進程的名字,因此遍歷/proc文件夾下的所有進程文件夾就能找到與進程名字對應(yīng)的進程PID。
/proc/{pid}/status 文件記錄了進程的詳細信息,其中 VmSize代表進程現(xiàn)在正在占用的內(nèi)存,VmRSS是程序現(xiàn)在使用的物理內(nèi)存,VmData:表示進程數(shù)據(jù)段的大小,Threads:表示當前進程中的線程個數(shù),/proc/{pid}/smaps也存有進程更加詳細的內(nèi)存信息,Rss:是實際分配的內(nèi)存,這部分物理內(nèi)存已經(jīng)分配,不需要缺頁中斷就可以使用的,Pss(proportional set size):是平攤計算后的實際物理使用內(nèi)存(有些內(nèi)存會和其他進程共享,例如mmap進來的)。以上數(shù)據(jù)對于進程內(nèi)存監(jiān)控和排查都具有重要意義

進程內(nèi)存泄露點定位

已有的內(nèi)存泄露檢查工具

常用的內(nèi)存泄露檢查工具
Linux官方網(wǎng)站推薦的內(nèi)存泄露檢查工具文章來源地址http://www.zghlxwxcb.cn/news/detail-436066.html

制作一個內(nèi)存泄露檢查工具

到了這里,關(guān)于Linux C/C++ 程序內(nèi)存泄露排查的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • C++經(jīng)典面試題:內(nèi)存泄露是什么?如何排查?

    1.內(nèi)存泄露的定義:內(nèi)存泄漏簡單的說就是申請了?塊內(nèi)存空間,使?完畢后沒有釋放掉。 它的?般表現(xiàn)?式是程序運?時間越?,占?內(nèi)存越多,最終?盡全部內(nèi)存,整個系統(tǒng)崩潰。由程序申請的?塊內(nèi)存,且沒有任何?個指針指向它,那么這塊內(nèi)存就泄漏了。 2.如何檢測

    2024年02月07日
    瀏覽(24)
  • 得物-Golang-記一次線上服務(wù)的內(nèi)存泄露排查

    得物-Golang-記一次線上服務(wù)的內(nèi)存泄露排查

    在風和日麗的一天,本人正看著需求、敲著代碼,展望美好的未來。突然收到一條內(nèi)存使用率過高的告警。 告警的這個項目,老代碼是python的,最近一直在go化。隨著go化率不斷上升,發(fā)現(xiàn)內(nèi)存的RSS使用率越飆越高。最終達到容器內(nèi)存限制后,進程會自動重啟。RSS如下圖所示

    2024年02月04日
    瀏覽(20)
  • 基于WebRTC構(gòu)建的程序因虛擬內(nèi)存不足導(dǎo)致閃退問題的排查以及解決辦法的探究

    目錄 1、WebRTC簡介 2、問題現(xiàn)象描述 3、將Windbg附加到目標進程上分析

    2024年02月08日
    瀏覽(40)
  • 什么是內(nèi)存溢出?什么是內(nèi)存泄露?

    什么是內(nèi)存溢出?什么是內(nèi)存泄露?

    文章目錄 一、什么是內(nèi)存溢出? ?二、什么是內(nèi)存泄露? 三、如何避免內(nèi)存溢出和內(nèi)存泄露? 一、什么是內(nèi)存溢出? ????????假設(shè)我們JVM中可用的內(nèi)存空間只有 3M ,但是我們要創(chuàng)建一個 5M 的對象,那么新創(chuàng)建的對象就放不進去了。這個時候,我們就叫做內(nèi)存溢出。就好

    2024年02月08日
    瀏覽(22)
  • 內(nèi)存溢出、內(nèi)存泄露的概述及常見情形

    內(nèi)存溢出、內(nèi)存泄露的概述及常見情形

    java doc 中對 Out Of Memory Error 的解釋是,沒有空閑內(nèi)存,并且垃圾收集器也無法提供更多內(nèi)存。 JVM 提供的內(nèi)存管理機制和自動垃圾回收極大的解放了用戶對于內(nèi)存的管理,由于 GC(垃圾回收)一直在發(fā)展,所有一般情況下,除非應(yīng)用程序占用的內(nèi)存增長速度非常快,造成垃圾

    2024年01月21日
    瀏覽(24)
  • 【Druid】Druid連接池泄露問題排查: wait millis 60000, active 50, maxActive 50

    要排查Druid連接池泄漏問題,可以按照以下步驟進行: 檢查代碼中的連接釋放:確保在使用完連接后,及時調(diào)用 connection.close() 或相應(yīng)的釋放連接的方法。確保沒有遺漏或誤釋放連接的情況。 檢查連接池配置:確認連接池的參數(shù)設(shè)置是否正確。包括最大連接數(shù)、最小空閑連接

    2024年02月16日
    瀏覽(22)
  • pytorch 訓練過程內(nèi)存泄露/顯存泄露debug記錄:dataloader和dataset導(dǎo)致的泄露

    微調(diào) mask-rcnn 代碼,用的是 torchvision.models.detection.maskrcnn_resnet50_fpn 代碼,根據(jù)該代碼的注釋,輸入應(yīng)該是: images, targets=None (List[Tensor], Optional[List[Dict[str, Tensor]]]) - Tuple[Dict[str, Tensor], List[Dict[str, Tensor]]] 所以我寫的 dataset 是這樣的: 大概思路是: 先把所有的標注信息讀入內(nèi)存

    2024年02月14日
    瀏覽(26)
  • 【Android 性能優(yōu)化:內(nèi)存篇】——WebView 內(nèi)存泄露治理

    【Android 性能優(yōu)化:內(nèi)存篇】——WebView 內(nèi)存泄露治理

    背景:筆者在公司項目中優(yōu)化內(nèi)存泄露時發(fā)現(xiàn)WebView 相關(guān)的內(nèi)存泄露問題非常經(jīng)典,一個 Fragment 頁面使用的 WebView 有多條泄露路徑,故記錄下。 項目中一個Fragment 使用 Webview,在 Fragment onDestroyView 時候卻沒有釋放,釋放 WebView 還不簡單嘛,于是筆者在 Fragment 的 onDestroyView 補充

    2024年02月04日
    瀏覽(33)
  • go 內(nèi)存泄露

    go 內(nèi)存泄露

    事件回顧 9.15號晚18點服務(wù)端發(fā)版 9.16號晚21點監(jiān)控顯示自發(fā)版后服務(wù)器 TCP_alloc 指標一路飆升至40K(如圖) 問題分析 看到 tcp_alloc 指標異常,初步懷疑有tcp連接創(chuàng)建后未關(guān)閉,應(yīng)該是上次發(fā)版寫了什么代碼導(dǎo)致的?;仡櫞舜伟l(fā)版清單,問題應(yīng)該出現(xiàn)在了daemon服務(wù)心跳上報上。 d

    2024年02月07日
    瀏覽(25)
  • C++內(nèi)存泄露

    C++內(nèi)存泄露

    目錄 1.什么是內(nèi)存泄露 2.內(nèi)存泄露的危害 3.如何解決內(nèi)存泄露等相關(guān)的問題 ? ? ? ? 在C/C++中 ,我們申請了資源,因為一些原因忘記對申請的資源進行釋放,或者因為異常安全等問題沒有進行釋放就會造成內(nèi)存泄露的。? ? ? ? ? 一般來說,如果不是長期運行的程序,內(nèi)存泄

    2024年02月09日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包