如果我只写, Conn.Close(); 不写 Conn.Dispose() 是不是只关闭了数据库连接,但是没有释放内存资源?

时间:2021-07-28 23:52:21
如果我只写, Conn.Close();  不写 Conn.Dispose()  是不是只关闭了数据库连接,但是没有释放内存资源?

不是说 连接数据库使用了 非托管资源,那么我们在关闭数据库Conn.Close() 是不是还要加一个 Conn.Dispose().

6 个解决方案

#1


关注

#2


关注

#3


不需要。

Close是逻辑的,并代表要释放这个connection对象,他仅仅是切断与数据源的连接。dispose做的事情就过多了,他主要是针对内存模型释放一些资源。

尽管.net的书上总是说GC会造成对象资源被“延迟”释放。实际上,GC的清理还是非常频繁地发生的,所以一般来说不需要写dispose。

可见,close比dispose要快而且保险。

#4


上面丢了一个字:

并“不”代表要释放这个connection对象

#5


学习!!!以前好象看过,所以我一直都只是close

#6


用close就好,dispose可让系统为你作

#1


关注

#2


关注

#3


不需要。

Close是逻辑的,并代表要释放这个connection对象,他仅仅是切断与数据源的连接。dispose做的事情就过多了,他主要是针对内存模型释放一些资源。

尽管.net的书上总是说GC会造成对象资源被“延迟”释放。实际上,GC的清理还是非常频繁地发生的,所以一般来说不需要写dispose。

可见,close比dispose要快而且保险。

#4


上面丢了一个字:

并“不”代表要释放这个connection对象

#5


学习!!!以前好象看过,所以我一直都只是close

#6


用close就好,dispose可让系统为你作