小编Wil*_*rno的帖子

.NET 4 WCF 内存问题

我遇到的问题是,我的ASP.NET 4 MVC 2 + WCF应用程序在负载测试期间使用Windows 2008 64 位应用程序中的大量内存,运行几分钟后它将耗尽几乎所有可用内存(8 GB) (我们做了有几个工作进程在运行)。

使用ANTS Memory Profiler进行分析后,它显示了一些有趣的结果:

  1. .NET 托管内存从 15 MB 增加到 40 MB,但这归因于我们在程序中所做的缓存机制。然而.NET本身分配了近180 MB的可用空间,这是出乎意料的。
  2. 非托管内存大小显着增加,直到负载测试运行大约 3 分钟后达到 120 MB(尽管我们的应用程序没有显式使用任何 P/Invoke 或 COM 对象。但是,我们确实使用了一些 COM+ 对象,这些对象在finally 中使用后被释放)堵塞)。
  3. 记忆变得支离破碎。
  4. 上面的第 1 和第 2 项导致整个应用程序在负载测试运行几分钟后使用大约 350 MB ,但如果我们不停止测试,它将继续进一步增长。

根据上面的第1项,我测试了一些应用程序来测试问题是否是由于我们的应用程序或WCF引起的。测试应用程序只是将 XML 数据(约 300KB)加载到多线程应用程序中的数据集。当逻辑存储在 EXE 程序中时,应用程序在完成后仅使用 24 MB 专用字节中的 200 KB(从开始时额外使用 120 KB,其中 40 KB 用于未使用的内存)托管内存(这是可以接受的);但是当逻辑托管在 WCF 中时,应用程序使用 66 MB 托管内存(从 64 MB 空闲/未使用的托管内存开始额外使用 61 MB)。所以看来 …

.net wcf garbage-collection memory-management

5
推荐指数
1
解决办法
7896
查看次数

标签 统计

.net ×1

garbage-collection ×1

memory-management ×1

wcf ×1