私はthsのようないくつかのコードを継承しました:
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 ステートメントが表示されることを期待しています。
Using objDBCmd
End Using
ASP.NET プロセスは徐々に (1 GB を超えて) 大きくなり、WinDBG は、ヒープ上に OracleCommand オブジェクトがあることを示します (予想したほどではありませんが)。OracleCommand は、プロセスのサイズを大きくする原因となる他のリソースを保持できると思います。