linux查看內(nèi)存泄露命令 怎樣解決Linux內(nèi)存泄漏?
怎樣解決Linux內(nèi)存泄漏?這個問題不屬于我的專長。我轉(zhuǎn)載了一個答案:有很多方法可以查詢內(nèi)存泄漏,可以在自動化工具(GitHub或相關(guān)網(wǎng)絡(luò)資源)的幫助下找到。當發(fā)生內(nèi)存泄漏時,有以下幾種檢查方法:檢查
怎樣解決Linux內(nèi)存泄漏?
這個問題不屬于我的專長。我轉(zhuǎn)載了一個答案:
有很多方法可以查詢內(nèi)存泄漏,可以在自動化工具(GitHub或相關(guān)網(wǎng)絡(luò)資源)的幫助下找到。當發(fā)生內(nèi)存泄漏時,有以下幾種檢查方法:
檢查代碼。如果代碼量不是很大,并且有交叉復(fù)習(xí)的習(xí)慣??梢栽谠缙诮鉀Q。
Internet上有許多工具可用于檢查內(nèi)存泄漏。我將列出一些我可以嘗試的:
vagrind將幫助您找出可疑點。它可以分為幾個級別來懷疑內(nèi)存泄漏。注意確定水平。
另外,vagrind運行的進程需要添加一個符號表,這樣就很容易顯示具體代碼泄漏的位置。
添加符號表會導(dǎo)致動態(tài)庫太大,無法在板中復(fù)制。您可以使用內(nèi)置的GDB插件,也可以只添加基本libc庫的符號表(libc.so公司應(yīng)該是這個嗎?)。
Mtrace
原理:封裝并記錄malloc函數(shù),這樣每次都可以搜索到與內(nèi)存相關(guān)的底層函數(shù),。
使用時,您需要在使用記憶功能的每個位置添加工具的頭文件。這樣會更麻煩。
當以上都無法分析時,我們需要了解底層的內(nèi)存管理機制。
例如:生成的每個線程都會有自己線程的區(qū)域內(nèi)存,因此在多線程的情況下,區(qū)域內(nèi)存會越來越多,達到一定數(shù)量后會繼續(xù)被重用。最后,大量內(nèi)存丟失。此時,需要減小每一代區(qū)域的大小。
作者:danny113
鏈接:https://www.jianshu.com/p/fa2d7df5966e
來源:竹簡
竹簡版權(quán)歸作者所有。請聯(lián)系作者獲得授權(quán),并注明轉(zhuǎn)載來源。