有個VC 程式,功能是不斷地收發一個USB 設備命令,長時間運行后,就會出現:
1 電腦螢屏顯示變成很大字體的那種;
2 此時打開比如網上鄰居、任務管理器、設備管理器等 ,都會出現彈出對話框 “系統資源不足,無法完成請求的服務”;
程式運行期間,從任務管理起看,沒有什么例外,記憶體、句柄數、現程數都穩定,而且電腦的記憶體使用也沒有發現例外 ;
我用 bound check 檢查代碼,也沒有發現特別泄漏什么的!
大家有遇到過否?或者有沒有什么排查思路?謝謝
uj5u.com熱心網友回復:
檢查一下具體的句柄是否被占用完如:網路SOCKET通訊句柄,GDI的句柄不斷增長...這樣引起資源流失還有你的VC程式是你自己寫的,有原始碼?如果有原始碼,在收發資料時檢查有沒有例外情況沒處理的,比如發生資料阻塞例外什么的,處理包資料決議處理是否得當?
uj5u.com熱心網友回復:
任務管理器中有一列是“gdi物件”,看看它有沒有變得很大uj5u.com熱心網友回復:
任務管理器檢查記憶體和GDI句柄有無例外uj5u.com熱心網友回復:
GDI句柄 , 用戶句柄 樓上都說了uj5u.com熱心網友回復:
任務管理器中,查看GDI句柄。。。uj5u.com熱心網友回復:
多謝各位 ,我特別留意了GDI 物件,都沒有變化 ;
用戶物件 、執行緒資料 也都沒有什么變化 !
跟剛開始 運行差不多!
uj5u.com熱心網友回復:
代碼都自己寫。收發那塊其實很簡單,無非就是接收資料發送資料,都用ReadFile ,WriteFile 操作 !
我用BoundCheck檢查也沒有什么例外!
uj5u.com熱心網友回復:
你的USB是什么東西, 是否有驅動, 如果驅動有問題可能出現這個問題,任務管理器可以看看核心記憶體增加的多不多
uj5u.com熱心網友回復:
那要是這樣的情況,那就很頭疼了。特別是需要長時間測驗才能看見問題的程式...
在看看像sendmessge,postmessage有沒有這樣的發訊息的地方,全部用postmessage處理
uj5u.com熱心網友回復:
自己看記憶體增加變化。。。uj5u.com熱心網友回復:
你的USB是什么東西, 是否有驅動, 如果驅動有問題可能出現這個問題,
任務管理器可以看看核心記憶體增加的多不多
嗯我看了 ,核心記憶體不斷增加,
從 14:21 -----15:15
186048-----203820
是不斷增加趨勢 ;
謝謝,我就從這個下手去排查;
uj5u.com熱心網友回復:
搞定沒?樓主,我也碰到一樣的問題了uj5u.com熱心網友回復:
檢查是否資源泄漏的辦法之一:在任務管理器 行程 查看 選擇列 里面選擇:記憶體使用、虛擬記憶體大小、句柄數、執行緒數、USER物件、GDI物件
讓你的程式(行程)不退出,回圈執行主流程很多遍,越多越好,比如1000000次甚至無限回圈,記錄以上各數值,再隔至少一小時,越長越好,比如一個月,再記錄以上各數值。如果以上兩組數值的差較大或隨時間流逝不斷增加,則鐵定有對應資源的資源泄漏!
搜“GDI泄露檢測”
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/103855.html
標籤:基礎類
