【发布时间】:2013-09-14 02:12:10
【问题描述】:
我有一个用 c# 编写的非常简单的 Windows 窗体应用程序,它每 30 秒触发一次计时器以检查特定进程是否正在运行。
private void timer1_Tick(object sender, EventArgs e)
{
Process[] localByName = Process.GetProcessesByName("ahost");
if (localByName.Length > 0)
{
//the process is running...do nothing
}
else
{
//send me an email
timer1.Enabled = false;
}
}
由于它要查找的进程基本上一直在运行,我根本没有点击else 中的电子邮件代码。
这是内存使用情况:
启动 3,580 启动 +1 分钟 3,724 启动 +10 分钟 7,484 启动 +30 分钟 8,024 启动 +60 分钟 7,604我是否可以假设 GC 正在完成它的工作,因为该应用程序在一小时内只将其内存占用量增加了一倍?
这是标准的 GC 行为吗?
我的小 EXE 是在 VS2010 中针对 .NET Framework 3.0 编写的,并且在 Win2008 R2 服务器上运行。
【问题讨论】:
-
很难说这是罪魁祸首,可能还有其他原因造成的。您是否正在使用
COM objects、Graphics、Bitmaps、Fonts,还有其他可能需要处理的东西? -
如果您的应用程序就这么简单,那么它看起来很正常。请参阅stackoverflow.com/questions/15598108/…,我想知道 5 小时后需要的内存..
-
多娜。不,这些都不是。谢谢。
-
肯健,谢谢。我去看看。
标签: c# winforms memory-leaks timer