gpt4 book ai didi

c# - 无法在 VS 2015 内存使用分析器中找到预期的对象

转载 作者:行者123 更新时间:2023-11-30 15:23:49 26 4
gpt4 key购买 nike

我有以下简单程序,我试图将其与 VS 2015 的内存使用相关诊断工具一起使用。

class Program
{
static void Main(string[] args)
{
Console.WriteLine("Begin");
Console.ReadLine();
Goo();
Console.WriteLine("End");
Console.ReadLine();
}

private static void Goo()
{
var list = new List<string>();
for (var i = 0; i < 1000; i++)
{
Foo(list);
}
}

private static void Foo(IEnumerable<string> strings)
{
foreach (var str in strings)
{

}
}
}

在分析此应用程序的项目时,我拍了几张快照并期待看到 1000盒装List<string>+Enumerator对象。例如,我在 JetBrains 的 dotMemory 中获得此类信息产品。但出于某种原因,我无法在 VS 的工具中看到这些信息……我显然遗漏了一些东西……谁能指出我正确的方向?

enter image description here

如您在上面的快照中所见,我获得了有关 mscorlib 的信息仅在我看不到有关我正在执行的程序的任何信息的地方使用模块。我错过了什么?...以下更多信息:

  • 我用了Start Diagnostic Tools Without Debugging在 Visual Studio
  • 拍摄并打开快照后,我什至取消了选项 Collapse small objects看看这是否隐藏了任何信息,但这也无济于事。

更新(响应用户回答):我正在使用 dotMemory 4.4 版。以下是我从中获得的数据的快照。注意:确保单击按钮 Collect Allocations在看到 Begin 后按下任意键之前留言

enter image description here

最佳答案

当您在“结束”点获取快照时,在 Goo 和 Foo 中创建的所有对象都已收集。我使用 dotMemory 10.0.1 分析了这段代码,也没有看到在 Goo 和 Foo 方法中创建的任何对象。

更新:在 dotMemory 中,您正在查看“内存流量” View 。 Memory traffic - 对象是否已创建并且可能已经收集到某个时间点。 dotMemory 向您显示一条警告,表明它无法显示收集的对象。如果你检查 "Start collecting allocation data immediatelly" checkbox在分析设置对话框中,dotMemory 将向您显示这 1000 个对象已分配并已收集。在 VS 诊断工具中,您正在查看实时 对象图。我对这个工具不是很熟悉,但似乎没有关于内存流量的信息。

如果您查看 dotMemory ( "All objects" view ) 中的事件对象图,您也不会找到这些对象。

关于c# - 无法在 VS 2015 内存使用分析器中找到预期的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33874081/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com