首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WinDbg记忆分析

WinDbg记忆分析
EN

Stack Overflow用户
提问于 2014-11-20 07:11:58
回答 1查看 2.2K关注 0票数 3

tl;dr;:我的假设是正确的,这是一个非托管内存泄漏吗?

我有一个.net 4 WPF应用程序崩溃与内存不足的异常。使用内存转储时,我需要一些关于阅读它们的建议:

!address -summary开始

代码语言:javascript
复制
--- Usage Summary ----- RgnCount --------Total Size -------- %ofBusy %ofTotal
unknown                 1863          37b80000 ( 891.500 Mb)  71.62%   43.53%
Free                    415           3233d000 ( 803.238 Mb)           39.22%
Image                   1542          10327000 ( 259.152 Mb)  20.82%   12.65%
Heap                    83             493e000 (  73.242 Mb)   5.88%    3.58%
Stack                   67             1480000 (  20.500 Mb)   1.65%    1.00%
Other                   12               37000 ( 220.000 kb)   0.02%    0.01%
TEB                     22               16000 (  88.000 kb)   0.01%    0.00%
PEB                     1                 1000 (   4.000 kb)   0.00%    0.00%
--- Type Summary (for busy) -- RgnCount ---------- Total Size -------- %ofBusy %ofTotal
MEM_PRIVATE                    900            30b7e000 ( 779.492 Mb)  62.62%   38.06%
MEM_IMAGE                      2619           157c3000 ( 343.762 Mb)  27.62%   16.79%
MEM_MAPPED                     71              7972000 ( 121.445 Mb)   9.76%    5.93%
--- State Summary ---------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
MEM_COMMIT                   2874              43753000 (   1.054 Gb)  86.71%   52.70%
MEM_FREE                     415               3233d000 ( 803.238 Mb)           39.22%
MEM_RESERVE                  716                a560000 ( 165.375 Mb)  13.29%    8.08%
--- Protect Summary (for commit) - RgnCount ---- Total Size --- %ofBusy %ofTotal
PAGE_READWRITE                    1004       26c48000 ( 620.281 Mb)  49.83%   30.29%
PAGE_EXECUTE_READ                 302        10f1e000 ( 271.117 Mb)  21.78%   13.24%
PAGE_READONLY                     812         7044000 ( 112.266 Mb)   9.02%    5.48%
PAGE_READWRITE|PAGE_WRITECOMBINE  8           22e6000 (  34.898 Mb)   2.80%    1.70%
PAGE_WRITECOPY                    370         1ebf000 (  30.746 Mb)   2.47%    1.50%
PAGE_EXECUTE_READWRITE            238          717000 (   7.090 Mb)   0.57%    0.35%
PAGE_EXECUTE_WRITECOPY            96           287000 (   2.527 Mb)   0.20%    0.12%
PAGE_READWRITE|PAGE_GUARD         44            66000 ( 408.000 kb)   0.03%    0.02%
--- Largest Region by Usage ----------- Base Address -------- Region Size ----------
unknown                                    2150000           186e000 (  24.430 Mb)
Free                                      77ffd000           6efb000 ( 110.980 Mb)
Image                                     68d43000            f1e000 (  15.117 Mb)
Heap                                      3c78c000            e04000 (  14.016 Mb)
Stack                                      2050000             fd000 (1012.000 kb)
Other                                     7efb0000             23000 ( 140.000 kb)
TEB                                       7eefa000              1000 (   4.000 kb)
PEB                                       7efde000              1000 (   4.000 kb)

运行!eeheap,我将获得GC堆大小

GC Heap Size: Size: 0x1f796cdc (528051420) bytes.

我是对的吗:总的进程内存是mem_commit + mem_free + mem_reserve,总计高达2GB,而托管内存仅使用500 GB,所以我面临着本地内存泄漏吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-20 20:28:03

自由的意义

“使用摘要”的 free MEM_FREE的确切含义是:内存是空闲的,可以分配。到目前为止,它还没有被.NET分配,也没有被本机代码分配。

但是,您甚至可以获得一个具有2GB空闲内存的OutOfMemoryException,例如通过

代码语言:javascript
复制
byte[] oops = new byte[Int.MaxValue];

所以问题是:尝试分配多少内存,而当时有多少内存是空闲的?

碎裂

只看FreeMEM_FREE是不够的,特别是如果您想要分配对象数组,这些对象是按顺序排列的。在这种情况下,一个块中必须有足够的内存。

因此,您必须查看最大区域(按的用法)部分,并在其中找到只有110 MB的Free。因此,任何人都不可能将超过110 MB的新内存作为单个块分配(既不是本机内存,也不是.NET)。

准确地说:这并不一定意味着你根本不能分配110 MB。在旧内存的帮助下,这是可能的,例如.NET可以进行垃圾收集,发现有120 MB空闲,并使用它而不是要求110 MB的新内存。

最终答案

不幸的是,由于提供了这些信息,不可能说出确切的原因。您可能希望遵循my flowchart for OutOfMemoryException analysis并阅读问题How to identify array type,这也让您了解如何从转储文件中识别数组大小。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27033776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档