簡體   English   中英

生產代碼中的內存泄漏

[英]Memory leak in production Code

我有一個使用C#WCF編寫的作為Windows服務運行的應用程序。 在生產代碼中,我們看到了一種行為,其中應用程序的內存增長緩慢。 查看代碼后,我們發現有一個詞典(並發),其中作業完成時添加而不刪除項目。 物品以每秒約100個的速度進入。 沒有更改代碼,有什么方法可以解決此問題? 還是有強制應用程序從外部進行垃圾收集的? 據我所知,只有發布它才能知道那里是否有任何可能性。

Item是具有兩個屬性的對象(均為int)。

如果將應用程序移動為由IIS作為應用程序池運行,則可以配置應用程序池“回收” 選項之一是對虛擬內存使用量進行回收 ,這是ASP處理內存泄漏的方式。

您還可以滾動自己的回收站,監視服務內存使用量,並在達到閾值時重新啟動它。

當然,應用程序回收確實意味着進程重新啟動,並且您的WCF服務可能對此做出不良反應,您的API調用可能會遇到減少的SLA,並且更糟的是,您可能會暴露WCF服務中的有害行為(錯誤)。 但是,這幾乎是“控制”不帶重新部署的生產中泄漏的唯一方法。

理想情況下,修復泄漏並重新部署。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM