.net - 如何判断是托管内存泄漏还是 native 内存泄漏?

标签 .net memory-leaks windbg managed sos

我与 native dll 互操作的 .NET 进程抛出 OutOfMemory 异常。以下是 !address -summary 和 --eeheap-gc 命令的输出。这是否意味着它是托管泄漏还是 native 泄漏?

0:000> !address -summary
ProcessParametrs 002f10a8 范围 002f0000 003f0000
环境 002f07f0 在范围 002f0000 003f0000

-------------------- 使用总结 --------------------------
TotSize ( KB) Pct(Tots) Pct(Busy) 使用
17773000 (384460):18.33% 22.25%:RegionUsageIsVAD
168aa000 (369320):17.61% 00.00%:RegionUsageFree
110fe000(279544):13.33% 16.18%:RegionUsageImage
395fe000(940024):44.83% 54.41%:RegionUsageStack
396000(3672):00.18% 00.21%:RegionUsageTeb
7540000(120064):05.73% 06.95%:RegionUsageHeap
0 ( 0) : 00.00% 00.00% : RegionUsagePageHeap
1000 ( 4) : 00.00% 00.00% : RegionUsagePeb
0 ( 0) : 00.00% 00.00% : RegionUsageProcessParametrs
0 ( 0) : 00.00% 00.00% : RegionUsageEnvironmentBlock
总计:7fff0000 (2097088 KB) 忙:69746000 (1727768 KB)

-------------------- 类型概要 --------------------------
TotSize ( KB) Pct(Tots) 用量
168aa000(369320):17.61%:
15970000(353728):16.87%:MEM_IMAGE
47e9000(73636):03.51%:MEM_MAPPED
4f5ed000(1300404):62.01%:MEM_PRIVATE

-------------------- 状态概要 --------------------------
TotSize ( KB) Pct(Tots) 用量
303e1000(790404):37.69%:MEM_COMMIT
168aa000(369320):17.61%:MEM_FREE
39365000(937364):44.70%:MEM_RESERVE

最大空闲区域:Base 0d8b1000 - 大小 0010f000 (1084 KB)

0:000> !EEHeap -gc
GC 堆数:1
第 0 代从 0x425f776c 开始
第 1 代从 0x425f5a08 开始
第 2 代从 0x01881000 开始
临时段分配上下文:无
段开始分配大小
01880000 01881000 0281ecf8 0x00f9dcf8(16375032)
12010000 12011000 12f83a04 0x00f72a04(16198148)
1e0a0000 1e0a1000 1e734094 0x00693094(6893716)
41e80000 41e81000 427048d0 0x008838d0(8927440)
大对象堆从 0x02881000 开始
段开始分配大小
02880000 02881000 02a36958 0x001b5958(1792344)
13010000 13011000 137c0020 0x007af020(8056864)

总大小 0x378b9d8(58243544)

GC 堆大小 0x378b9d8(58243544)

最佳答案

395fe000 ( 940024) : 44.83% 54.41% : RegionUsageStack

避免同时运行一千个线程。

关于.net - 如何判断是托管内存泄漏还是 native 内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7389762/

相关文章:

windows - 如何更改年龄不匹配的 PDB 以正确匹配?

c# - 如何在 .NET 中使用 RSA 和 SHA256 对文件进行签名?

windbg - !findstack 是否有任何等效命令来过滤托管代码?

.net - Ruby 使用 native 工具包进行跨平台开发的可行性?

c++ - 不同机器上的不同 Valgrind 输出

c++ - Ubuntu System Monitor 和 valgrind 发现 C++ 应用程序中的内存泄漏

python - 垃圾收集 python rss 内存

c++ - `sizeof` C++ 应用程序中的所有类型

c# - OpenGL4Net System.BadImageFormatException

c# - 无法访问已处置的对象。套接字 C#