比较.Net和VB6应用程序的内存占用量

时间:2008-10-31 15:30:43

标签: .net performance memory vb6

我一直在尝试比较VB6应用程序和.Net应用程序之间的内存占用量。试图确定两者之间的平均差异。

.Net代码在很大程度上是VB6的直接翻译,并且大部分具有与在C#中编程的相同的指令。因此,虽然它是苹果与橘子的比较,但它是对功能上(如果不是逻辑上)等效的程序的比较。

我一直在使用Process Explorer来帮助我确定应用程序的内存使用情况,但是有一些方面让我感到困惑:

  1. 我一直在努力确定整体内存消耗。我应该使用哪个Process Memory列。到目前为止,我一直在研究工作集。
  2. 为了比较应用程序中DLL的大小,PExplorer显示了Size,WS Total和其他WS计数器,如何解释这些?为什么Size与WS Total如此不同,这些不应该相同吗?
  3. 到目前为止,我已经收集到WS Total包括WS Private和WS Shareable。所以使用WS Total只能是一种欺骗性措施。我还从诸如.Net exe memory footprint之类的问题中读到.Net工作集通常比它应该更大。是否会在内存不足的环境中实例化该进程,比如一个128 MB的虚拟机将工作集大小减少到最小?

    非常感谢任何帮助或见解。

1 个答案:

答案 0 :(得分:3)

Mark Russinovich对此有good essay

您可以使用Win32 API调用SetProcessWorkingSetSize(GetCurrentProcess(), - 1,-1)手动减少应用的工作集。这是Windows在内存运行不足时会做的事情,但是控制何时发生这种情况会让你将.NET应用程序的工作集剥离到最小尺寸以便进行调查。