【发布时间】:2010-04-26 23:53:50
【问题描述】:
我正在开发一个 c# 服务应用程序,我遇到了这个问题,不知从何而来,也没有明显的原因,进程的内存将在大约 5 秒内从 150mb 攀升到几乎 2gb,然后又回到 150mb。但是我们系统中的任何东西都不应该使用接近那个内存量的任何地方(所以它可能是某个地方的错误)。在某处可能是一个紧的 while true 循环,但当时的 cpu 使用率非常低,所以我想我会寻找其他想法。
现在更奇怪的是,当我为 64 位编译服务时,除了超过 10gb 的内存(其中大部分是分页)之外,还会发生同样的大规模爆发,并且它只会导致计算机及其上运行的所有东西出现很多问题。一段时间后它会关闭,但看起来 Windows 仍然愿意为其提供更多内存。
你有什么想法或工具可以用来找到这个吗? 是的,它有很多日志记录,但是日志中没有任何内容能说明为什么会发生这种情况。
我可以在控制台应用程序模式下运行该服务,所以我的下一个测试将在 Visual Studio 调试器中运行它,看看我是否能找到任何东西。
它只是偶尔发生,但通常在启动后大约 10-20 分钟发生。 在 32 位模式下,它会清理并像往常一样继续。 64位模式它会在一段时间后崩溃并使用愚蠢的内存量。 但我真的很困惑为什么会这样!!!!
编辑:请参阅对 windbg 帖子的赞扬
【问题讨论】:
-
您能否使用日志记录数据和内存使用突发时间来了解“突发时间”运行的代码是什么?
-
是的,虽然它看起来像正常活动:(如果我登录了每一个方法,我可能会找到它,但这会有点臃肿>_