假設我想在很多線程上執行一些命令。我有這個示例代碼: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;'不需要部分,因爲沒有其他代碼會無論如何運行 - 無論如何循環將繼續。 –