Linux下如何檢查內(nèi)存泄露.ppt_第1頁
Linux下如何檢查內(nèi)存泄露.ppt_第2頁
Linux下如何檢查內(nèi)存泄露.ppt_第3頁
Linux下如何檢查內(nèi)存泄露.ppt_第4頁
Linux下如何檢查內(nèi)存泄露.ppt_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Linux下如何檢查內(nèi)存泄露,什么是內(nèi)存泄露?,以下說法哪個(gè)正確? 應(yīng)用程序在分配某段內(nèi)存后,由于程序使用錯(cuò)誤造成物理內(nèi)存的缺失 應(yīng)用程序在分配某段內(nèi)存后,由于設(shè)計(jì)錯(cuò)誤,失去了對該段內(nèi)存的控制,因而造成了內(nèi)存的浪費(fèi),什么是內(nèi)存泄露?,指的是堆內(nèi)存的泄露,堆內(nèi)存是指程序從堆中分配的,任意大小的使用后必須顯式釋放的內(nèi)存 分配: malloc, calloc, realloc, new 釋放: free, delete 由于疏忽或錯(cuò)誤造成程序未能釋放已經(jīng)不再使用的內(nèi)存的情況,Linux下檢查內(nèi)存泄露,內(nèi)存泄露的主要表現(xiàn)及其危害 當(dāng)程序連續(xù)運(yùn)行時(shí),與程序相關(guān)的內(nèi)存(或堆)變的越來越大 內(nèi)存泄露會(huì)減少可用內(nèi)存的數(shù)量從而降低計(jì)算機(jī)的性能 當(dāng)所消耗的內(nèi)存達(dá)到系統(tǒng)的上限時(shí)候,自己會(huì)崩潰,嚴(yán)重者導(dǎo)致系統(tǒng)掛起或崩潰,以下程序會(huì)發(fā)生內(nèi)存泄露嗎? (一),以下程序會(huì)發(fā)生內(nèi)存泄露嗎? (一),以下程序會(huì)發(fā)生內(nèi)存泄露嗎? (二),以下程序會(huì)發(fā)生內(nèi)存泄露嗎? (二),以下程序會(huì)發(fā)生內(nèi)存泄露嗎? (二),ps:顯示瞬間進(jìn)程的狀態(tài) 常用參數(shù): l: 長格式輸出 u: 按用戶名和啟動(dòng)時(shí)間的順序來顯示進(jìn)程 j: 用任務(wù)格式來顯示進(jìn)程 f: 用樹形格式來顯示進(jìn)程 a: 顯示所有用戶的所有進(jìn)程 x: 顯示無控制終端的進(jìn)程 r: 顯示運(yùn)行中的進(jìn)程 ww: 避免詳細(xì)參數(shù)被截?cái)?以下程序會(huì)發(fā)生內(nèi)存泄露嗎? (二),ps使用范例 $ps /列出當(dāng)前shell里當(dāng)前用戶的進(jìn)程 $ps u yuhong /列出用戶yuhong運(yùn)行的所有進(jìn)程 $ps el /以詳細(xì)列表方式顯示運(yùn)行的所有進(jìn)程 $ps aux /以詳細(xì)的BSD風(fēng)格顯示運(yùn)行的所有進(jìn)程,%MEM: 占用的內(nèi)存的使用率 VSZ : 虛擬內(nèi)存大小,即一個(gè)程序完全駐留在內(nèi)存的話需要占用多 少內(nèi)存空間 RSS: 當(dāng)前實(shí)際占用了多少內(nèi)存 STAT: 進(jìn)程當(dāng)前狀態(tài),進(jìn)程的狀態(tài),TASK_RUNNING(運(yùn)行) TASK_INTERRUPTIBLE(可中斷) TASK_UNINTERRUPTIBLE(不可中斷) TASK_ZOMBIE(僵死) TASK_STOPPED(停止),R,S,D,Z,T,后綴 (高優(yōu)先級(jí)進(jìn)程) N (低優(yōu)先級(jí)進(jìn)程) L (內(nèi)存鎖頁) s (該進(jìn)程為會(huì)話首進(jìn)程) + (前臺(tái)進(jìn)程) l (多線程進(jìn)程),如果有進(jìn)程狀態(tài)為Ssl?,以下程序會(huì)發(fā)生內(nèi)存泄露嗎? (二),以下程序會(huì)發(fā)生內(nèi)存泄露嗎? (二),top:按序顯示正在執(zhí)行的進(jìn)程 $ top - d delay p pid q c C S s i n iter b uptime行,系統(tǒng)重新引導(dǎo)至今的時(shí)間、用戶數(shù)、負(fù)載平均數(shù) 第二行, 進(jìn)程統(tǒng)計(jì)行:進(jìn)程總數(shù),sleeping, running, zombie和stopping進(jìn)程數(shù) 第三行, CPU統(tǒng)計(jì)數(shù)據(jù):用戶、系統(tǒng)、nice以及空閑進(jìn)程所 占CPU時(shí)間的百分比 第四行, 存儲(chǔ)器的統(tǒng)計(jì)數(shù)據(jù):可用內(nèi)存總數(shù)、自由內(nèi) 存、使用的內(nèi)存、共享內(nèi)存,用于緩存空間 第五行, 虛擬內(nèi)存或交換區(qū)統(tǒng)計(jì)數(shù)據(jù):可用總交換區(qū)、使 用的交換區(qū)、自由交換區(qū)以及緩存交換區(qū) 自此以下,類似于PS格式,以下程序會(huì)發(fā)生內(nèi)存泄露嗎? (二),Linux下檢查內(nèi)存泄露,ps aux, top 靜態(tài)分析工具 mtrace 在main.c代碼中嵌入: #include mtrace(); /*要檢查是否會(huì)有內(nèi)存泄露的代碼段*/ muntrace(); 編譯運(yùn)行 $gcc o main main.c $export MALLOC_TRACE=./log /用該環(huán)境變量來定義一個(gè)文件log用于輸出 $./main $cat log,Linux下檢查內(nèi)存泄露,ps aux, top 靜態(tài)分析工具 mtrace 動(dòng)態(tài)分析 Valgrind 訪問 Valgrind HOW TO 站點(diǎn) /HOWTO/Valgrind-HOWTO/ S

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論