那么,我必须debugging内存分配问题。 随着时间的推移,应用程序内存不足。 我需要为.net窗口应用程序模拟低内存系统,以更快地重现内存不足问题。
PS:我最初的调查表明,内存泄漏发生时,应用程序正在分配非托pipe资源(托pipeDX)。
写另一个程序,分配您的系统的所有内存:)
或者,在内存较低的虚拟机中进行调试
static volatile byte[] wasted; //volatile to avoid any compiler cleverness "saving" us! static void Main(string[] args) { wasted = new byte[1024 * 1024 * 1024];//waste a gig! }
在您的应用程序上运行Application Verifier也是值得的。
另外,我建议你使用一个.NET分析器,这样你可以检查你的程序的哪个区域正在分配更多的内存。
如果应用程序运行内存不足,访问非托管资源,这可能是内存泄漏。 在低内存环境下运行应用程序不会直接帮助您诊断问题,它会发生得更快。
您需要分析应用程序的内存使用情况,以确定如何分配内存并查找泄漏。 普通的性能分析工具将无法提供帮助,因为非托管代码将不会被分析。 你将不得不创造一个内存监控应用程序。