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ù)免費閱讀

下載本文檔

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

文檔簡介

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

溫馨提示

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

評論

0/150

提交評論