【问题标题】:Growing in the "Virtual bytes" performance counter在“虚拟字节”性能计数器中增长
【发布时间】:2010-02-02 14:24:43
【问题描述】:

在巨大的工作负载下运行几个小时后,我的 Windows 服务出现“内存不足”异常。 我使用以下性能计数器来检测内存泄漏:

  • 所有堆中的字节数

  • 私有字节
  • 虚拟字节

前 2 个计数器有规律地上下波动……我看不出它们有什么问题。 但是第三个随着时间的推移增长非常缓慢,计数器也在上升和下降,但最后它随着时间的推移而增加。 这是什么意思?

我的 Win 服务是 .NET,它从 C++ DLL 调用一些函数,并使用其中包含一些非托管代码的第 3 方。

这是否表明托管代码/非托管代码中存在内存泄漏?或者只是这无济于事?

谢谢

【问题讨论】:

  • 没有足够的信息来回答这个问题。您是否在 C# 代码中分配内存?可以贴代码吗?
  • C++ DLL 不是我的代码,它们都是第三方,我在托管代码中分配和释放大量资源,我无法将它们全部发布,它们太多了,其中一些与 GDI+、ADO.NET 和许多其他类型的对象有关。我也相信非托管代码经常这样做(由于它的功能)

标签: memory windows-services memory-leaks performancecounter


【解决方案1】:

查看clr profiler,以便监控您的使用情况。如果它仅在巨大负载下崩溃,则可能不会出现错误,而是处理负载的新设计约束。

【讨论】:

  • hmmm,我不知道为什么这个分析器不喜欢我的Win服务,他总是显示一个对话框:“等待服务启动公共语言运行时”,配置文件能够启动服务,但随后他显示该对话框。
猜你喜欢
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 2015-11-23
  • 1970-01-01
  • 2022-12-01
  • 2012-12-20
  • 2012-08-10
  • 2010-11-13
相关资源
最近更新 更多