假设我想在许多线程上执行一些命令。我会有这个示例代码:
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 线程并设置一些字符串会泄漏内存。随着代码的运行,内存使用率越来越高。现在,我认为这是因为我正在设置变量然后放弃它们 - 有没有办法我可以继续/中断而不会增加内存使用量?
这是将
字符串与"+"字符连接循环中的经典问题。相反,使用 StringBuilder 在循环中组合字符串。