国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

關于垃圾回收(GC和Marshal)有感

2019-11-14 13:59:16
字體:
來源:轉載
供稿:網友

  最近做一個掛機軟件。要求是掛個三四天沒事,不會報錯。開始的時候都是順利的,所有步驟都是可以ok。但是當測試運行的是就出現問題了,內存居然會在一個Task跑完之后暴漲幾M的內存。開了一臺測試機測試了一天,內存持續泄漏,毫無停止的跡象。測試機4G的內存基本跑完。檢測后發現的調用的組件問題,應該的調用的C++組件自己沒有釋放資源。這個問題一共持續了兩個禮拜。期間嘗試了各種方法,GC和Marshal都用了,還是無果。最后用了用了笨辦法,不去刻意的創建那些對象,一直使用一個對象,然后單對象跑,測試后發現內存正常了,有正常的回收。

  說實話,我對.NET的GC還是很相信,還是認為靠譜的,但是在內存泄漏面前,這些都是浮云。GC管理不到他們(這些調皮的家伙),我嘗試用Marshal去釋放句柄,結果也是一樣,不管是COM創建的還是其他,一直是增長的。

  說一句Dispose也好Destroy也罷,Close也行,其實我都用上,最后我還設了對象為null。最后不管其他還是GC。還是提醒自己,.NET雖然安全,GC也是靠譜,但是自己對內存這件事也是要看重,我是對C++的那些內存束手無策了。很多人說誰創建的誰釋放,但是對于一些封裝的組件,內存泄漏了就很難入手。其實托管的對象,只要別寫的太水,GC還是很強大的,至少編譯器在編譯成IL的時候已經做了處理。當然如果真的相對垃圾回收有確切的認識,可以自己建一個項目去監控自己的內存,去確切的體會。看百遍書不如實踐測試來得有效。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 孟连| 扎赉特旗| 聂荣县| 穆棱市| 民丰县| 唐山市| 临海市| 永修县| 明溪县| 华蓥市| 巫山县| 云和县| 北安市| 洛浦县| 恩平市| 抚松县| 密山市| 伊宁市| 普兰县| 县级市| 大厂| 长葛市| 保山市| 乡宁县| 三原县| 塔城市| 化隆| 乌拉特后旗| 阳谷县| 舟曲县| 霸州市| 土默特右旗| 淳安县| 山东省| 台江县| 旺苍县| 嘉兴市| 秭归县| 康马县| 南京市| 天柱县|