C#继续/打破泄漏内存

时间:2017-10-20 20:51:32

标签: c# loops memory-leaks

让我们说我想在许多线程上执行一些命令。我有这个示例代码:

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

1 个答案:

答案 0 :(得分:-4)

这是一个经典的issue,在带有“+”字符的循环中连接字符串。而是使用StringBuilder在循环中组合字符串。