1
我在我的WCF應用程序服務器中使用Castle Windsor DI容器。在這種情況下,生命週期是每個請求:創建一個新的服務實例,創建並安裝容器,解析一些組件,完成工作並處理所有組件。Castle Windsor DI容器內存泄漏
但是,經過一定數量的請求後,我的應用服務器的內存消耗不斷增加。當我注意到DI使用情況時,我能夠發現內存問題消失。但是當我安裝容器並解析某個組件時,會出現一些「內存泄漏」。 我發現一些文章和文章談論生命週期。但是他們都被綁定到容器實例。由於我的容器只是在請求期間生存,所以在處理它時一定會被破壞。
我的服務實現了IDisposable,並在Dispose方法中調用container.Dispose。但內存使用量會不斷增長。
使用dotMemory分析器我可以看到存在ProxyGenerationOptions和一些其他類的倖存者和新實例。
我這麼想嗎?爲什麼容器在調用Dispose之後沒有釋放所有已用過的內存?
你看到了同樣的問題,如果你使用的是Windows permon?我問內存泄漏的原因與內存使用過多不一樣。換句話說,你有信心它是一個「泄漏」? – Spock
我相信這確實是一個漏洞。所有計數器都顯示內存消耗增加此外,dotMemory顯示生活在內存中的相同Castle。*類的實例的明確數量,並且在每個請求(容器創建 - 安裝 - 解析 - 處置)之後該數量增加。我想在容器後面。在那裏設置所有的城堡。*對象將被垃圾收集。 –
誰在內存中持有他們?按照類似的保留方式打開組「,或者打開一個實例和」密鑰保留路徑「視圖 –