是否需要静态List <WeakReference>?

wog*_*les 3 c# multithreading windows-services weak-references

我正在使用ILSpy对使用vb.net编写的旧Windows服务进行逆向工程.我想用C#重写遗留服务.原始服务泄漏内存.

当我查看源代码时,服务类中有以下声明:

private static List<WeakReference> __ENCList = new List<WeakReference>();
Run Code Online (Sandbox Code Playgroud)

此列表仅用于构造函数中,如下所示(imineRun是服务类):

List<WeakReference> _ENCList = imineRun.__ENCList;
            Monitor.Enter(_ENCList);
            try
            {
                imineRun.__ENCList.Add(new WeakReference(this));
            }
            finally
            {
                Monitor.Exit(_ENCList);
            }
Run Code Online (Sandbox Code Playgroud)

这个列表可能导致内存泄漏吗?这个清单是否需要,目的是什么?

use*_*116 5

由于它在您的代码中没有使用,因此它不是服务的必要部分.现在,我在IL输出中看到了之前看过这个,显然你偶然发现了服务中留下的编辑并继续代码.根据博客文章,它显然可能是高内存使用的罪魁祸首.

在生产服务器上运行以调试模式构建的模块绝不是一个好主意.在这种情况下,调试模式模块结合了这些模块为Visual Studio的编辑和继续功能实现__ENCLIST帮助程序这一事实.

我敢打赌,它是使用完全调试支持而不是作为发布可执行文件编译的.

您可以安全地忽略端口中的此代码.