2008-10-31 81 views
4

我一直在嘗試比較VB6應用程序和.Net應用程序之間的內存佔用情況。試圖確定兩者之間的平均差異。比較.Net和VB6應用程序的內存佔用情況

.Net代碼大部分是VB6的直接翻譯,並且大部分都具有與它們在C#中編程相同的指令。因此,雖然這是一個橙子比較的蘋果,但它是功能上(如果不是邏輯上)等效的程序的比較。

我一直在使用Process Explorer可以幫助我確定的應用程序的內存使用情況,但是有一些已經離開了我困惑的幾個方面:

  1. 我一直在試圖確定整體內存消費。我應該使用哪個進程內存列。到目前爲止,我一直在尋找工作集的。
  2. 爲了比較應用程序中DLL的大小,PExplorer顯示Size,WS Total和其他WS計數器,這些如何解釋?爲什麼Size與WS Total有所不同,不應該一樣嗎?

到目前爲止,我已經知道WS Total包括WS Private和WS Shareable。所以只使用WS Total可能是一個欺騙性的措施。我還從諸如.Net exe memory footprint等問題中讀出了.Net工作集通常比應該大的問題。在一個內存不足的環境中實例化進程,比如說一臺128MB的虛擬機將工作集大小減少到最小?

任何幫助或見解將不勝感激。

回答

3

Mark Russinovich在此上有一個good essay

您可以使用Win32 API調用SetProcessWorkingSetSize(GetCurrentProcess(),-1,-1)手動減少應用程序的工作集。這就是Windows系統在內存不足時會執行的操作,但控制這種情況發生時,您可以將.NET應用程序的工作集設置爲最小大小以用於調查目的。

+0

我看過那篇文章,並沒有給我留下太深刻的印象,因爲他沒有深入細節。例如,哪個DLL佔用更多資源?分析有點有缺陷,就我而言,源代碼至少儘可能匹配原始代碼。 – 2008-10-31 16:34:53

相關問題