好吧,我必须调试内存分配问题。应用程序随着时间的推移耗尽内存。我需要为.net窗口应用程序模拟低内存系统,以便更快地重现内存不足问题。
PS:我的初步调查显示,在应用程序分配非托管资源(托管DX)时发生内存泄漏。
答案 0 :(得分:9)
编写另一个分配系统所有内存的程序:)
或者,在具有低内存的VM中进行调试
答案 1 :(得分:1)
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也是值得的。
答案 2 :(得分:0)
此外,我建议您使用.NET分析器,以便检查程序的哪个区域分配更多内存。
答案 3 :(得分:0)
如果应用程序内存不足,访问非托管资源,则可能是内存泄漏。在低内存环境中运行应用程序不会直接帮助您诊断问题,它会更快地发生。
您需要分析应用程序的内存使用情况,以确定如何分配内存并找到泄漏。正常的分析工具无济于事,因为不会分析非托管代码。您必须使用内存监控应用程序发挥创意。