Dav*_*nko 4 c# regex memory-leaks
由于内存使用率很高,以下代码在一段时间后崩溃(我打开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();
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
完整代码:http://pastebin.com/0SQYn44z
EDIT2:
我发现并发布了解决方案(foreach循环)感谢所有试图提供帮助的人.
我无法从你的例子中看出,但RegexOptions.Compiled旗帜可能会导致问题.来自msdn:
Compiled指定将正则表达式编译为程序集.这会加快执行速度,但会增加启动时间.调用CompileToAssembly方法时,不应将此值分配给Options属性.
如果将正则表达式编译为程序集,则在重新启动应用程序之前无法卸载生成的代码,因为.Net不会卸载程序集.
这意味着如果你有很多不同的正则表达式,并且你没有重用它们,那么编译的正则表达式通常不是一个好主意.
| 归档时间: |
|
| 查看次数: |
2919 次 |
| 最近记录: |