나는 THS 같은 일부 코드 상속 :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 프로세스가 (GB 1 이상에) 점진적으로 성장하고 WinDBG로는 OracleCommand를 개체 (I 예상대로 생각만큼되지 않음) 힙에 있다는 것을 보여줍니다 . OracleCommand가 프로세스 크기를 증가시키는 다른 리소스를 보유 할 수 있다고 가정합니다.
감사합니다. 위의 코드를 예제로 사용했습니다. 열린 100,000 개의 conection은 없습니다. – w0051977
글쎄, DB 연결이 문제가 아닌 것 같습니다. 높은 메모리가 높은로드 중에 만 발생하고 그 다음으로 내려가거나 지속적으로 크립합니까? 그때 크리프가 정적 변수와 세션에 저장된 모든 것을 확인하십시오. – zeal