我知道有没有简单的回答我的问题,但我会很感激的想法,指南或 某种东西到查找在列表OutOfMemoryException异常 - 出出主意
我有网的Windows服务,是不断抛出OutOfMemoryException。 该服务有两个适用于x86和x64 Windows的版本。但是,在x64上,它会消耗更多的内存。我曾尝试用各种内存分析器对其进行分析。但我无法弄清楚问题所在。诊断 - 服务在3到12小时后消耗大量VMSize并崩溃应用程序。行为是相当随机的 - 崩溃情景没有可观察的模式。
另外我试着看看性能计数器(perfmon.exe)。我可以看到, 堆大小正在增长,%GC时间平均为19%。 Plus内存分配与%CPU时间相关。
我的应用程序有线程和锁定对象,DB连接和WCF接口。 的一般问题,我试图解决:
根本就没有得到它GC足够快 到GC对象或一些非管理 (窗口)对象正在消耗 内存?
与性能计数器图片链接第一个应用程序查看 http://s006.radikal.ru/i215/1003/0b/ddb3d6c80809.jpg
在我看来,你有一些对象不是释放(内存泄漏),或者你的CPU工作太多,框架决定不运行垃圾回收器。还可以查看MSDN垃圾收集器的延迟模式 - http://msdn.microsoft.com/zh-cn/library/bb384202.aspx。你到目前为止使用了哪种内存分析器? – 2010-03-24 12:21:42
你是从数据库中查询很多数据吗? – AndrewC 2010-03-24 12:26:42
嗨Mikael,我试过dotTrace和蚂蚁。他们也崩溃(有时) 将看看你提供的链接。 – 2010-03-24 12:31:39