每隔20秒查询数据库一次,内存不断在增长
一个监控程序,C#,每隔20秒查询数据库一次,数据量不大,可内存区不断在增长。
已经在每次查询完数据库后使用,内存回收了(代码如下),但效果不明显。
if (dbConnection != null)
{
dbConnection.Close();
dbConnection = null;
}
if (dbCommand != null)
{
dbCommand.Dispose();
dbCommand = null;
}
if (dsResult != null)
{
dsResult.Clear();
dsResult.Dispose();
dsResult = null;
}
if (dataAdapter != null)
{
dataAdapter.Dispose();
dataAdapter = null;
}
GC.Collect();
------解决方案--------------------锁的问题/
------解决方案--------------------友情up
------解决方案--------------------1、为数据库打上最新的补丁
2、查查病毒
3、确认程序中的资源占用确实被释放,可以查看数据库的锁信息
4、排除以上原因,则是正常现象,可以为SQL Server设置最大使用内存选项来控制。
------解决方案--------------------非特殊情况,不要手动垃圾回收
如果需要网络连接数据库, 试一下使用web服务直接返回要检查的状态, web服务则调用数据库的存储过程
如果是本机需要20秒读一次,你可以设计为保持一个长连接
------解决方案--------------------一个监控程序,C#,每隔20秒查询数据库一次,数据量不大,可内存区不断在增长。
已经在每次查询完数据库后使用,内存回收了(代码如下),但效果不明显。
lz可以考虑用多线程来实现:利用多线程中锁的机制,在同一时刻只允许一个线程访问数据库,并及时释放数据库连接.