我有一個運行在生產環境中的C#.NET服務。該服務用作客戶端註冊並提出請求的TCP服務器。在查看任務管理器時,它似乎泄漏大約10MB /天。我似乎沒有注意到這些在開發(可能是因爲少得多的流量和客戶端活動)。在四處搜尋時,我已經看到任務管理器可能是嚴重錯誤的,但我不確定這是多麼準確,或者在什麼情況下TM會顯示不正確的信息。針對.NET生產服務中的內存泄漏
要解決這個問題,我需要更密切地監視內存消耗。問題在於泄漏似乎只出現在生產中,其中部署的服務是爲Release版本構建的。另外,由於這是一項無法直接運行的服務,因此VS會附帶一個配置文件/調試程序,但我不確定如何以比TM更精確的方式查明問題。
任何羣體的智慧將不勝感激,謝謝。
編輯:
- 我添加性能計數器的服務的士兵字節(7MB開出),以及在所有堆CLR MEM(30MB開出)
- 任務管理器說總內存大約是37MB,所以這似乎是有意義的
- 第一部分是讓服務去一天,並再次檢查我的計數器。
如果我的私人字節變大,但CLR mem大致是靜態的,這將表明一個非託管泄漏。如果兩者都變大,那麼這是一個管理泄漏。
謝謝你們。
爲什麼不在測試/分期運行發佈版本以查看是否可以重現泄漏?這是第1步。識別泄漏將是第2步(使用內存分析器)。 – Oded 2012-03-09 16:45:44
我已經完成了這項工作。不幸的是,在開發方面,流量的數量要低一個數量級。所以泄漏不太明顯。 – kmarks2 2012-03-09 16:59:12