簡體   English   中英

Windows服務中的內存泄漏-InterceptableDbCommand

[英]Memory leak in Windows Service - InterceptableDbCommand

我的內存泄漏有問題。 當我在窗口模式下運行應用程序時,一切正常,但是當我將其作為Windows服務托管時,內存泄漏會出現問題。 它不會釋放DbContext和其他對象,因為它們被引用為GC根的InterceptableDbCommand。 InterceptableDbCommand包含對由實體框架生成的數據庫的查詢。

應用程序和Windows服務模式之間的重新分配內存有何區別?

通常,如果垃圾回收器的“ Gen 0”即將溢出(大對象堆也可以觸發GC),則會釋放內存。 AFAIK垃圾收集器使用相同的方法來釋放.Net應用程序和Windows服務的內存。

如果存在內存泄漏,則可能在應用程序和Windows服務中都存在(如果工作流程完全相同)。 可能您的應用程序存在相同的問題,但是由於其工作流程的性質而沒有引起注意。 您如何測試它的內存泄漏?

更重要的是:確保處置InterceptableDbCommand和所有其他一次性對象。

好的,我找到了原因。 Main方法中有屬性[STAThread],將其刪除后,一切正常。

暫無
暫無

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

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