gpt4 book ai didi

C# 内存泄漏?

转载 作者:太空狗 更新时间:2023-10-30 00:15:47 24 4
gpt4 key购买 nike

以下代码由于内存使用率过高而在一段时间后崩溃(我打开 taskmanager 并且其使用的内存不断增加)。但是我看不到任何内存泄漏,除了垃圾收集没有完成它的工作。有什么建议吗?

//Load a list of regex
//Load a list of phrases
//Open a output file

foreach (string regexString in regexList)
{
int num = 0;

Regex regex = new Regex(regexString, RegexOptions.Compiled | RegexOptions.IgnoreCase);

foreach (string phrase in phraseList)
num += regex.Matches(phrase).Count;

if (num > 0)
{
output.WriteLine(String.Join(" ", num, phrase));
output.Flush();
}
}

编辑:

完整代码:http://pastebin.com/0SQYn44z

编辑2:

我找到并发布了解决方案(foreach 循环)感谢所有试图提供帮助的人。

最佳答案

我无法从您的示例中看出,但有可能是 RegexOptions.Compiled 标志导致了问题。来自 msdn:

Compiled specifies that the regular expression is compiled to an assembly. This yields faster execution but increases startup time. This value should not be assigned to the Options property when calling the CompileToAssembly method.

如果将正则表达式编译为程序集,则在您重新启动应用程序之前无法卸载生成的代码,因为 .Net 不会卸载程序集。

这意味着如果您有很多不同的正则表达式,并且您不重用它们,那么编译的正则表达式通常不是一个好主意。

关于C# 内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11174366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com