我有一個由多個組件組成的應用程序,每個組件都編譯成單個DLL,每個組件都運行多個線程。我有一個啓動這些組件的shell程序。我試圖跟蹤內存泄漏,它做我想要的嗎?
我在一個窗口CE 6環境中運行這個應用程序,這是唯一的程序(除了那些系統)。但是,隨着時間的推移,我發現在查看任務管理器窗口時分配的內存使用量正在緩慢增加。懷疑我的程序可能有內存泄漏我做了以下事情。
我去一個特定的組件,並創建一個每30分鐘一班調用下面的代碼Timer對象:
long memByte = GC.GetTotalMemory(false);
Console.Write("Heap Memory: " + (memByte/1000).ToString() + "KB");
來自各地的互聯網,我認爲GetTotalMemory基本上讓我總讀管理的記憶系統。如果我的程序沒有內存泄漏問題,那麼我懷疑加班時會在繪製結果時得到某種類型的扁平線。否則,我會看到一個緩慢的增加。
我的問題是,GetTotalMemory實際上是否給我所有應用程序的總管理堆內存,還是它只給出了正在運行此代碼的當前組件使用的特定堆?
謝謝,
「千字節」是1024字節,而不是1000字節。 –
哎呀,謝謝你指出。 – Fylix
我認爲他們重新定義千字節(KB)爲1000字節,而kibibyte(KiB)爲1024字節。 http://en.wikipedia.org/wiki/Kibibyte – rocketsarefast