【问题标题】:OutOfMemoryException - out of ideas IIOutOfMemoryException - 没有想法 II
【发布时间】:2011-01-31 15:03:05
【问题描述】:

这个问题和我的previous question有关。

故事情节:我有一个消耗大量内存的 .NET 应用程序 如果您查看任务管理器 VMSize。我正在尝试找出消耗这么多内存的原因。

您在下图中看到,VM 大小为 2.46 GB

好的,现在我正在查看 .net 性能计数器

alt text http://s006.radikal.ru/i213/1003/30/dd42433cd12d.jpg

提交保留字节加起来只有1.2 GB

现在让我们看看windb sos 调试。 让我们运行 eeheap -gc 命令

alt text http://s001.radikal.ru/i194/1003/e8/9da33856ed58.jpg

GC 使用的堆大小只有 340 MB。剩余的已用内存在哪里? 我需要了解为什么 TaskManager 中的 WM 大小为 2.4 GB

更新

--------------------------------------
Total LoaderHeap size: 0x74c000(7651328)bytes
=======================================
Number of GC Heaps: 1
generation 0 starts at 0x0000000081b89d00
generation 1 starts at 0x0000000081a83b20
generation 2 starts at 0x0000000001281000
ephemeral segment allocation context: none
         segment            begin         allocated             size
0000000001280000 0000000001281000  00000000057416a0 0x00000000044c06a0(72091296)
000000004ad00000 000000004ad01000  00000000513c1cc8 0x00000000066c0cc8(107744456)
000000007fff0000 000000007fff1000  000000008994e310 0x000000000995d310(160813840)
Large object heap starts at 0x0000000011281000
         segment            begin         allocated             size
0000000011280000 0000000011281000  00000000112c67d0 0x00000000000457d0(284624)
Total Size        0x14523e48(340934216)
------------------------------
GC Heap Size        0x14523e48(340934216)

【问题讨论】:

  • 您是否加载了任何可能泄漏的本机代码?您可以使用lm 命令查看加载的模块。
  • 你能用 !eeheap(无参数)的输出而不是加载器堆来更新帖子吗?
  • 你能发布一个 VMMap (technet.microsoft.com/en-us/sysinternals/dd535533.aspx) 转储吗?
  • !vmstat 会给你类似的信息
  • 好的,问题解决了。堆栈大小正在增长,因为计时器创建的线程正在等待 lock 语句

标签: .net memory-leaks out-of-memory taskmanager


【解决方案1】:

Tess 发表了一篇关于其他内存使用来源的文章。检查https://blogs.msdn.com/tess/archive/2006/02/15/532804.aspx

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 2019-12-22
  • 1970-01-01
  • 1970-01-01
  • 2014-06-06
相关资源
最近更新 更多