假设我想在很多线程上执行一些命令。我有这个示例代码:C#继续/破解内存泄露
for (int i = 0; i < 5000; i++)
{
new Thread(() =>
{
while (true)
{
string foo = "foo " + DateTime.Now.Ticks;
bool breakout = false;
for (int j = 0; j < random.Next(10, 100); j++)
{
string bar = "bar " + DateTime.Now.Ticks;
if (j == 5)
{
continue;
}
if (j == 8)
{
breakout = true;
break;
}
}
if (breakout)
{
continue;
}
string baz = "baz " + DateTime.Now.Ticks;
}
}).Start();
}
这个代码示例,创建5K线程和设置一些字符串,泄漏内存就我而言。随着代码的运行,内存使用率越来越高。 现在,我认为这是因为我设置变量,然后放弃它们 - 有没有一种方法可以继续/中断内存使用增加越来越多?
您正在创建5000个永不终止的线程。你正在泄漏记忆。 –
你的头衔似乎“怪”打破/继续。你不认为“运行5000个不断创建新字符串的线程”更可能是原因吗? (我的猜测是你的CPU太重,GC没有机会运行。) –
'if(j == 5)continue;'不需要部分,因为没有其他代码会无论如何运行 - 无论如何循环将继续。 –