內(nèi)存泄漏查找方案_第1頁
內(nèi)存泄漏查找方案_第2頁
內(nèi)存泄漏查找方案_第3頁
內(nèi)存泄漏查找方案_第4頁
內(nèi)存泄漏查找方案_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

MPC內(nèi)存泄漏查找方案1.基本工具及方法使用工具VS2003,LeakDiag,Windows自帶Perform檢測器基本查找方法在開發(fā)代碼期間,當(dāng)程序退出時(shí),vs的輸出對話框中有內(nèi)存泄漏的輸出顯示。不要放過這樣的機(jī)會(huì),一定保證程序調(diào)試的時(shí)候正常退出時(shí),vs輸出對話框中無內(nèi)存泄漏顯示。專門查找內(nèi)存泄漏,使用LeakDiag工具,記錄程序邏輯中認(rèn)為分配內(nèi)存前,分配內(nèi)存后,釋放內(nèi)存后的對應(yīng)點(diǎn)。分析獲得的log日志,查找內(nèi)存泄漏。備注:在查找內(nèi)存泄漏前,需要確定所查Application是否內(nèi)存泄漏,或者內(nèi)存泄漏嚴(yán)重性。需要借助Windows自帶的性能計(jì)數(shù)器??梢栽俦緳C(jī)或者測試機(jī)器上建立一個(gè)對應(yīng)于Application的性能計(jì)數(shù)器。主要檢測性能計(jì)數(shù)器的PrivateBytes字段。在程序運(yùn)行一段時(shí)間,會(huì)出現(xiàn)對應(yīng)的blg文件,一般存放在C:\PerfLogs中。通過查看自己程序的PrivateBytes來查找Application是否內(nèi)存泄漏或者是VisualMemory碎片。2.調(diào)度內(nèi)存泄漏查找方案2.1工作流程MQ任務(wù)接收à任務(wù)分析à內(nèi)存數(shù)據(jù)添加和更新à界面更新àend任務(wù)分配à子任務(wù)構(gòu)造à內(nèi)存數(shù)據(jù)更新à界面更新à分配到服務(wù)MQàendMQ服務(wù)接收à服務(wù)注冊à內(nèi)存數(shù)據(jù)更新à界面更新àendMQ服務(wù)接收à服務(wù)卸載à內(nèi)存數(shù)據(jù)更新à界面更新àendMQ服務(wù)接收à子任務(wù)回饋消息(成功、失敗、進(jìn)度)à內(nèi)存數(shù)據(jù)更新à界面更新àendMQ服務(wù)接收à服務(wù)心跳à內(nèi)存數(shù)據(jù)更新à界面更新àend任務(wù)完成à成功任務(wù)入歷史記錄à內(nèi)存數(shù)據(jù)刪除à界面條目刪除àend任務(wù)刪除à內(nèi)存數(shù)據(jù)刪除à界面條目刪除àend歷史記錄查詢à內(nèi)存數(shù)據(jù)創(chuàng)建à界面條目增加àend歷史記錄刪除à內(nèi)存數(shù)據(jù)刪除à界面條目刪除àend歷史記錄列表清空à內(nèi)存數(shù)據(jù)刪除à界面條目刪除àend2.2內(nèi)存泄漏測試caseCaseNameModulesHowtoTest服務(wù)注冊服務(wù)注冊,內(nèi)存數(shù)據(jù),界面更新服務(wù)注冊,但不發(fā)送心跳信息首先使用NULLWORK服務(wù)來模擬,同時(shí)也需要修改調(diào)度,不讓調(diào)度中的服務(wù)無心跳后卸載。服務(wù)心跳服務(wù)心跳處理模塊服務(wù)不斷發(fā)送心跳(增大心跳發(fā)送頻率)首先使用NULLWORK服務(wù)來模擬,需要增大心跳發(fā)送的頻率。服務(wù)卸載服務(wù)卸載,內(nèi)存數(shù)據(jù),界面更新服務(wù)正常發(fā)送卸載消息服務(wù)不發(fā)送心跳,導(dǎo)致調(diào)度服務(wù)異常卸載首先使用NULLWORK服務(wù)來模擬任務(wù)接收測試任務(wù)接收,策略讀取,任務(wù)分析,,任務(wù)刪除MQ工具任務(wù)接收任務(wù),然后使用taksconsle的刪除功能刪除所有任務(wù)任務(wù)分配子任務(wù)xml構(gòu)造,任務(wù)發(fā)送,內(nèi)存數(shù)據(jù),界面更新服務(wù)只接受任務(wù),返回添加成功或失敗等信息首先使用NULLWORK服務(wù)來模擬;再用真正的轉(zhuǎn)碼,剪切,合成等流程來測試進(jìn)度進(jìn)度消息處理,內(nèi)存數(shù)據(jù),界面更新服務(wù)接收任務(wù)成功后,不斷返回進(jìn)度信息。首先使用NULLWORK服務(wù)來模擬,增大進(jìn)度返回的頻率;再用真正的轉(zhuǎn)碼,剪切,合成等流程來測試任務(wù)成功,且成功功任務(wù)不入歷史庫消息接收,任務(wù)狀態(tài)更新,內(nèi)存數(shù)據(jù),界面更新服務(wù)接收任務(wù)成功后,只返回任務(wù)成功的消息。配置調(diào)度整個(gè)任務(wù)成功后,不入歷史庫。首先使用NULLWORK服務(wù)來模擬,收到任務(wù)后,立即返回任務(wù)成功。任務(wù)成功,且成功任務(wù)寫入歷史庫消息接收,任務(wù)狀態(tài)更新,內(nèi)存數(shù)據(jù),界面更新,歷史記錄模塊服務(wù)接收任務(wù)成功后,只返回任務(wù)成功的消息。配置調(diào)度整個(gè)任務(wù)成功后,入歷史庫。首先使用NULLWORK服務(wù)來模擬,收到任務(wù)后,立即返回任務(wù)成功。任務(wù)失敗消息接收,任務(wù)狀態(tài)更新,內(nèi)存數(shù)據(jù),界面更新服務(wù)接收任務(wù)執(zhí)行失敗消息。首先使用NULLWORK服務(wù)來模擬,服務(wù)接收任務(wù)成功后,不返回進(jìn)度,直接返回任務(wù)執(zhí)行失敗的消息。注意:使用LeakDiag記錄以下幾個(gè)點(diǎn),操作之前初始狀態(tài)的點(diǎn),每個(gè)類型操作批量操作之后的點(diǎn),清理環(huán)境為初始狀態(tài)的點(diǎn)。然后對相關(guān)數(shù)據(jù)做分析。3.轉(zhuǎn)碼內(nèi)存泄漏查找方案3.1工作流程3.1.1拆包1MXF(ExcludeDBE)àAvi+Wav//1MXF(IncludeDBE)àAvi+Wav+DBE3.1.2轉(zhuǎn)碼 MxfAvi(1.0)+mp3 //MxfAvi(2.0)+mp3 Avi+wavAvi(1.0)+mp3 //Avi+wavAvi(2.0)+mp3 //Avi+wavWMV3.1.2封包 Avi+WavMXF(ExcludeDBE)//Avi+Wav+DBE1àMXF(IncludeDBE)內(nèi)存泄漏測試caseCaseNameModulesHowtoTest任務(wù)接受解析TaskConsole調(diào)度任務(wù),并更新UI正常任務(wù)與錯(cuò)誤任務(wù)交叉使用。任務(wù)狀態(tài)反饋將轉(zhuǎn)碼服務(wù)本身運(yùn)行狀態(tài)返回給TaskConsole.(不要忽略心跳檢測)使用不同的NotifyEvent來查看拆包拆包流程,主要針對Mxf到Avi任務(wù)配置不同的策略,使用不同的素材,達(dá)到3.1.1的效果。使任務(wù)成功一次,中途失敗一次。轉(zhuǎn)碼轉(zhuǎn)碼流程,主要針對media格式不同的轉(zhuǎn)換任務(wù)配置不同的策略,使用不同的素材,達(dá)到3.1.2的效果。使任務(wù)成功一次,中途失敗一次。封包主要針對avi格式到mxf的封包任務(wù)配置不同的策略,使用不同的素材,達(dá)到3.1.3的效果。使任務(wù)成功一次,中途失敗一次。4.內(nèi)存查找點(diǎn): 明顯的MemoryLeak出現(xiàn)已經(jīng)解決,即在Debug下,退出程序會(huì)出現(xiàn)內(nèi)存泄漏的輸出顯示。目前主要解決的有:COM組件中的MemoryLeak主要是BSTR,VARIANT,_bstr_等的使用VirtualMemoryLeak提交字節(jié)計(jì)數(shù)器跟隨虛擬字節(jié)計(jì)數(shù)器緩慢增長,則容易出現(xiàn)VirtualMemoryLeakVirtualMemoryFragmentation虛擬字節(jié)計(jì)數(shù)器增長快于提交字節(jié)數(shù),則為VirtualMemoryFragmentation。容易出現(xiàn)在同意堆上的Arrary數(shù)組與Hash表。主

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論