我想寫一個簡單的C#程序/控制檯應用程序來創建緩慢和受控制的內存泄漏。我想讓程序慢慢吃掉系統內存。我需要這個來測試我正在測試的其他東西。用於創建內存泄漏的C#代碼。
有人建議我使用:
Marshal.AllocHGlobal(numbytes)
連接到一個計時器。
這裏是我試圖執行代碼:
class Program
{
static Timer timer = new Timer();
static void Main(string[] args)
{
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
start_timer();
Console.Read();
}
static void timer_Elapsed(object sender, ElapsedEventArgs e)
{
IntPtr hglobal = Marshal.AllocHGlobal(100);
Marshal.FreeHGlobal(hglobal);
Process proc = Process.GetCurrentProcess();
Console.WriteLine(proc.PrivateMemorySize64);
}
private static void start_timer()
{
timer.Start();
}
}
輸出似乎表明,內存仍然被管理,垃圾回收做的工作。有人可以幫我解決這個問題嗎?我的目標是確實造成內存泄漏並耗盡系統資源。有人請提出我的代碼有什麼問題,或者有其他更好的選擇。
當你說「內存泄漏」,你只是指內存分配,GC不會釋放?爲什麼不把數據推入參考列表? – Jacob
創建一個執行一些計算的無限循環。 – Mukus
不會調用'Marshal.FreeHGlobal'釋放剛分配的內存嗎? – matthewrdev