{eval=Array;=+count(Array);}

亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

問答專欄Q & A COLUMN

怎樣解決Linux內(nèi)存泄漏?

zhonghanwenzhonghanwen 回答0 收藏1
收藏問題

1條回答

jerry

jerry

回答于2022-06-27 17:09

這個問題,不屬于我的專長,我轉(zhuǎn)載一個解答:


內(nèi)存泄露的查詢有很多方式,可以借助自動化工具(github或相關(guān)網(wǎng)絡(luò)資源上找),往往出現(xiàn)內(nèi)存泄露時可以有以下幾種方式來排查:

review代碼。如果代碼量不是很大,并且有交叉review的習慣??梢栽诔跗诮鉀Q掉。

使用內(nèi)存泄露檢查工具,網(wǎng)上有很多工具,我列舉幾個可以嘗試的:

vagrind 這個工具會幫你檢查出懷疑點,它分好幾個等級來懷疑內(nèi)存泄露,注意確定那個等級。

還有vagrind 跑進程需要添加符號表,這樣很容易顯示出具體代碼哪個位置出現(xiàn)泄露。

添加符號表導致動態(tài)庫太大,無法在板子中復現(xiàn)??梢酝ㄟ^內(nèi)置的gdb外掛,或者僅僅添加基礎(chǔ)libc庫的符號表(libc.so 應(yīng)該是這個?)。

mtrace

原理:對malloc 函數(shù)進行封裝和記錄改造,使每次調(diào)用內(nèi)存相關(guān)的底層函數(shù)有依據(jù)可查找,。

使用時需要在每個使用過內(nèi)存函數(shù)的地方增加該工具自帶的頭文件。這點會比較麻煩。

當上面的幾種都分析不出來時,需要了解更底層的內(nèi)存管理機制。

例如:生成的每個線程都會有自己arean內(nèi)存用于本身線程使用,所以在多線程的情況下會導致arean內(nèi)存變多,且在達到一定數(shù)量后會繼續(xù)復用。導致最終內(nèi)存大范圍的丟失掉。此時需要將arean 每次生成大小要減少。

作者:danny113

鏈接:https://www.jianshu.com/p/fa2d7df5966e

來源:簡書

簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。

評論0 贊同0
  •  加載中...

最新活動

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關(guān)注的人
向幫助了您的網(wǎng)友說句感謝的話吧!
付費偷看金額在0.1-10元之間
<