代码之家  ›  专栏  ›  技术社区  ›  usr

如何只转储第一个对象地址!转储堆(.load sos)

  •  2
  • usr  · 技术社区  · 16 年前

    我有几百万件东西挂在记忆中。我想为它们找到gcrots,所以我需要一个对象地址。!dumpheap会转储所有比我有耐心等待的时间长的对象。如何将其输出限制为仅一个对象地址?我正在使用Visual Studio 2008 btw。

    4 回复  |  直到 13 年前
        1
  •  3
  •   usr    14 年前

    杰森·埃文斯是对的。我的版本没有-l开关,所以这里是我使用的解决方法:我使用end参数将输出限制到如下地址范围:

    !dumpheap -mt 0794f29c 0 04000000
    

    最后一个地址是我允许的最高地址。通过小步骤增加地址,我最终找到了前几个对象。

        2
  •  2
  •   KingCrunch    13 年前
    !dumpheap -type System.String -short
    

    将只转储对象的地址

        3
  •  1
  •   Tim Cooper    14 年前

    退房 this 第页。看起来你可以用

    -l X
    

    限制显示的项目数。

        4
  •  0
  •   JaredPar    16 年前

    最好从-stat参数开始。这将转储活动对象表的摘要,而不是系统中的每个对象。它可以让您很好地了解哪些对象造成的开销最大

    !dumpheap -stat
    

    我也建议看一下下面的博客文章,因为它们是用来帮助人们使用windbg来跟踪这类问题的。

    推荐文章