是否使用内部类中的方法无需对象初始化使用新关键字引起C#Winform中的内存泄漏



我看到代码中使用的以下模式很多。这是否导致某种形式的内存泄漏用于大量字符串和字符串串联操作(数百万在不同尺寸的字符串上进行操作)。

pattern = (new CommonPattern(form)).ToString();

实现普通群体的类看起来像这样(归结为与问题相关的代码之后):

internal class CommonPattern {
    private string pattern;
    private TForm form;
    public CommonPattern(TForm form) {
        pattern = pattern + form.Name;
    }
    public override string ToString() {
        return pattern;
    }
}

我尝试添加像这样的破坏者。

~CommonDesignerPattern() { }

在小型项目中调用此代码时,我们没有看到任何问题。但是,在我们看到的150-200个表格的项目中,我们看到了重大问题 - 导致记忆例外。

记忆剖面师没有帮助我找到这个问题。当我进行分析时,它指向字符串 byte [] 作为最终嫌疑人,这对我没有帮助。

我从事一个非常大项目的一小部分工作,想了解上述代码中使用的呼叫是否会导致内存泄漏,并学习如何解决该问题。

在线搜索结果大量指向事件手。但是具体来说,我想知道上述情况是否会导致内存泄漏。

您发布的类代码中没有内存泄漏。字符串串联确实创建了其他字符串的实例,但是,一旦这些字符串超出范围,它们最终将被垃圾收集器清理。

最新更新