我一直在尝试比较VB6应用程序和.Net应用程序之间的内存占用量。试图确定两者之间的平均差异。
.Net代码在很大程度上是VB6的直接翻译,并且大部分具有与在C#中编程的相同的指令。因此,虽然它是苹果与橘子的比较,但它是对功能上(如果不是逻辑上)等效的程序的比较。
我一直在使用Process Explorer来帮助我确定应用程序的内存使用情况,但是有一些方面让我感到困惑:
到目前为止,我已经收集到WS Total包括WS Private和WS Shareable。所以使用WS Total只能是一种欺骗性措施。我还从诸如.Net exe memory footprint之类的问题中读到.Net工作集通常比它应该更大。是否会在内存不足的环境中实例化该进程,比如一个128 MB的虚拟机将工作集大小减少到最小?
非常感谢任何帮助或见解。
答案 0 :(得分:3)
Mark Russinovich对此有good essay。
您可以使用Win32 API调用SetProcessWorkingSetSize(GetCurrentProcess(), - 1,-1)手动减少应用的工作集。这是Windows在内存运行不足时会做的事情,但是控制何时发生这种情况会让你将.NET应用程序的工作集剥离到最小尺寸以便进行调查。