我继承喜欢的部份一些代码:ASP.NET内存泄漏 - 的OracleCommand
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Try
Dim Test As Integer
Dim strCon As String = "Data Source=TestDatabase;User Id=TestUser;Password=TestPassword;"
For Test = 0 To 100000
Dim objDBCon As New OracleConnection(strCon)
Dim objDBCmd As New OracleCommand
Dim objDR As OracleDataReader
Using objDBCon
'Using objDBCmd
objDBCmd.Connection = objDBCon
objDBCmd.CommandText = "SELECT * FROM nominal_incident where rownum = 1 "
objDBCon.Open()
objDR = objDBCmd.ExecuteReader
'End Using
End Using
Next
Catch ex As Exception
'Handle the exception. It is not absorbed.
End Try
End Sub
难道这会导致内存泄漏?我希望看到使用语句如下:
Using objDBCmd
End Using
ASP.NET进程逐步增长(超过1 GB)和WinDBG中显示,有对象的OracleCommand在堆(尽管没有像很多如我所料) 。我认为OracleCommand可以保留其他资源,这些资源会导致进程的规模增长。
谢谢。我用上面的代码作为例子。没有打开100,000个连接。 – w0051977 2012-07-16 14:42:13
好吧,我猜数据库连接不是问题。高记忆力仅在高负荷时发生,然后下降或持续蠕动?如果它蠕变,然后检查存储在静态变量和会话中的所有内容。 – zeal 2012-07-16 16:35:28