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 线程并设置一些字符串会泄漏内存。随着代码的运行,内存使用率越来越高。现在,我认为这是因为我正在设置变量然后放弃它们 - 有没有办法我可以继续/中断而不会增加内存使用量?

这是将

字符串与"+"字符连接循环中的经典问题。相反,使用 StringBuilder 在循环中组合字符串。

最新更新