我繼承喜歡的部份一些代碼: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