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

成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

問(wèn)答專(zhuān)欄Q & A COLUMN

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

zhonghanwenzhonghanwen 回答0 收藏1
收藏問(wèn)題

1條回答

jerry

jerry

回答于2022-06-27 17:09

這個(gè)問(wèn)題,不屬于我的專(zhuān)長(zhǎng),我轉(zhuǎn)載一個(gè)解答:


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

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

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

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

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

添加符號(hào)表導(dǎo)致動(dòng)態(tài)庫(kù)太大,無(wú)法在板子中復(fù)現(xiàn)。可以通過(guò)內(nèi)置的gdb外掛,或者僅僅添加基礎(chǔ)libc庫(kù)的符號(hào)表(libc.so 應(yīng)該是這個(gè)?)。

mtrace

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

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

當(dāng)上面的幾種都分析不出來(lái)時(shí),需要了解更底層的內(nèi)存管理機(jī)制。

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

作者:danny113

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

來(lái)源:簡(jiǎn)書(shū)

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

評(píng)論0 贊同0
  •  加載中...

最新活動(dòng)

您已邀請(qǐng)0人回答 查看邀請(qǐng)

我的邀請(qǐng)列表

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