【发布时间】:2014-03-26 18:48:10
【问题描述】:
在我的托管公司,我有 2 个或多或少相同的 .net 应用程序。这两个应用程序使用相同的池,最大内存为 300 mb。
我可以刷新其中一个应用程序的起始页大约 10 次,然后出现内存不足异常并且池崩溃。
在我的应用程序中,我打印出以下内存值:
PrivateMemorySize64: 197 804.00 kb (193.00 mb)
PeakPagedMemorySize64:247 220.00 kb (241.00 mb)
VirtualMemorySize64:27 327 128.00 kb(26 686.00 mb)
PagedMemorySize64:197 804.00 kb (193.00 mb)
PagedSystemMemorySize64:415.00 kb (0.00 mb)
PeakWorkingSet64:109 196.00 kb (106.00 mb)
WorkingSet64:61 196.00 kb (59.00 mb)
GC.GetTotalMemory(true):2 960.00 kb (2.00 mb)
GC.GetTotalMemory(false): 2 968.00 kb (2.00 mb)
我已经阅读、阅读并阅读了有关内存分析的视频,但是当我对应用程序进行分析时,我找不到任何问题。 我使用 ANTS Memory profiler 8 并在构建后一次刷新起始页时得到此结果:
当我查看摘要时,.NET 使用分配给应用程序的 135.8 MB 总私有字节中的 41.65 MB。 每次刷新,这个值都会变得越来越大。这正常吗?当我刷新 8 次时,我得到了这个: .NET 正在使用 56.11 MB,其中 153 MB 总私有字节分配给应用程序。
我应该从哪里开始?使用这么多内存可能是什么问题? 300 mb 内存不足吗?
【问题讨论】:
-
这完全取决于你的代码在做什么。确保你在所有事情上都调用
Dispose。如果您有数据库连接,请确保关闭Dispose链中的那些。
标签: c# asp.net memory memory-management