请看下面的代码,这是我作为测试编写的。它不会使 ASP.NET 进程增长太多:
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Try
Dim Test As Integer
For Test = 0 To 1000000
Test1()
Next
Dim Test2 As String = "Test"
Catch ex As Exception
End Try
End Sub
Public Sub Test1()
Try
Dim objCommand As New SqlCommand
Dim strConString As String = "Data Source=IANSCOMPUTER;Initial Catalog=Test;Integrated Security=True"
Dim objCon As New SqlConnection
objCon.ConnectionString = strConString
objCon.Open()
objCommand.Connection = objCon
objCommand.CommandText = "select * from person "
Dim objDR As SqlDataReader = objCommand.ExecuteReader
If objDR.HasRows Then
Using objCon
End Using
End If
Catch ex As Exception
'I don't swallow exceptions.
End Try
End Sub
End Class
我正在尝试检测内存泄漏。我在受影响的项目中发现了与上述类似的代码。我注意到 objCommand.dispose 没有被调用。有问题的项目连接到一个 Oracle 数据库和一个 SQL 数据库。连接到 SQL 数据库时,使用上述代码。连接到 Oracle 数据库时使用 Oracle.dataaccess.dll,代码看起来不同以反映这一点。
我的具体问题是:如果我避免调用 sqlcommand.dispose 那么这会随着时间的推移导致内存泄漏吗?