这种状况,在有动态访问数据库的情况下,更为显示。连接到数据库服务器是个费时的过程。必须建立物理通道(例如套接字或命名管道),必须与服务器进行初次连接,必须分析连接字符串信息,必须由服务器对连接进行身份验证,等等。ADO.NET中,使用了连接池的优化方法,来管理维护连接。Open时,连接池就会检查池中是否有可用的连接。如果有,直接返回给调用者,而不是建新。 Close 时,会判断该连接是否在最小连接数之内,如果“是”会将连接回收到活动连接池中,而不是真正关闭。以备下次使用。这样,第一次使用时比较慢,紧接着再用就很快。如果,长期不用,超过连接的生命周期(有限时的),或着长期不用被连接池优化清理掉了。这就再用,那就和第一次一样,从头再来一遍,当然就慢了。
.NET 在一段时间没有使用,会自动释放一些资源
其次:你线程是不是空闲时间占资源太多,见意在空闲时间用,Thread.Sleep(1000);空闲一秒钟
再次:你程序中写的静态变量是不是过多,所以会产生这样结果,静态变量是程序使用中一直加载在内存的,所以在你内存过小的情况下,会转存硬盘的扩充缓存