我发现一个很棒的工具,可以很好地显示进程中的内存使用情况。

这个示例工具将为您提供虚拟内存空间的直观概述(从内存转储),显示您的分配存在于何处以及您拥有的分配类型。例如,在下面的屏幕截图中,您可以看到在内存空间的开始,我们有大量的虚拟分配(深绿色-已提交,浅绿色-保留),然后我们有大量的可用空间(白色),在内存空间的末尾,我们可以看到我们的DLL分散开来(深红色)。


在底部屏幕中,我们可以看到GC(.NET)堆。换句话说,我们在顶部屏幕上看到的大多数虚拟分配实际上是GC堆。有一点需要注意的是,对于GC堆,它不显示为GC堆保留的内容,只显示提交的内容,即我们实际使用的内容。


我把它们分开,这样你就可以在非.net应用程序中使用这个工具了。


研究这样的东西的目的是为了弄清楚我们有多少碎片,我们有多少保留内存和提交内存等等。如果我们确实有很多碎片,我们应该从哪里开始寻找以减少碎片。

原来的工具有点复杂,因为它可以读取内存转储等,并允许您放大不同的区域以获得更多的细节,但在大多数情况下,上面看到的已经足够了。

要使用示例工具,请执行以下步骤:

1、在windbg中打开内存转储并正确设置符号

2、运行!address ,然后拷贝输出到一个文本文件

3、Load sos

4、运行!eeheap –gc ,然后拷贝输出到另一个文本文件

5、打开工具,点击加载

 

标签: none

添加新评论