2008-10-31 60 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

相关问题