如何检测应用程序是否受内存限制?有某种模式或工具吗?主要用于C ++和C#应用程序......我不认为Microsoft Visual Studio中有这样的工具。
答案 0 :(得分:4)
好吧,您可以使用perfmon
查看应用程序的功能。查看“.NET CLR内存”计数器 - 有许多可用选项,例如GC集合(每代),GC中花费的时间百分比,每代的大小等。您还可以指定您只需要查看应用程序的数据。
如果这还不够详细,那么你需要一个分析器 - 这里有很多选项,包括微软的免费CLR Profiler。
答案 1 :(得分:0)
在大多数应用程序中,这些东西实际上很容易被发现 - 即你的内存耗尽而你的应用程序崩溃了。 OTOH,如果你的意思是:我的应用程序是通过分配和释放太多/太频繁来捶打记忆然后你有一个问题,分析器更好地回答。有关使用哪个探查器的堆栈溢出问题已经提出了几个问题。
答案 2 :(得分:0)
分析工具的各种指针都在目标上。但是,根据您的可用工具(和预算;-),有一些低技术方法可以快速提示:
答案 3 :(得分:0)
在Linux下,您可以使用perfmon kernel patches提供的基于硬件的性能监控界面。它们不在主流内核中,目前有两种竞争方法(LKML需要花费大量时间来决定哪一种更好),但它们都提供对各种硬件计数器的访问。使用它们可以跟踪内存带宽问题,缓存问题等。这是相当低级的东西,但是当性能受到关注时,这些讨厌的问题很重要。
我不知道什么工具在windows下提供了相同的功能我认为英特尔VTune可以做到这一点......他们声称有
强大的Visual Studio和.NET 积分。快速深入研究 确定有问题的行的来源 代码。
还有一个免费的评估版 - 所以你可以尝试一下。