在Microsoft.NET(VB)中编写函数以避免内存泄漏的最佳方法是什么。我一直遵循这种风格:
Public Sub TestMemoryLeak()
Dim testCon As SqlConnection
Try
testCon = New SqlConnection
Catch
Finally
If testCon.State = ConnectionState.Open Then
testCon.Close()
End If
testCon = Nothing
End Try
End Sub
此处连接引用在TRY子句之前创建,并在TRY子句之后初始化。我相信即使抛出异常,连接也会被关闭并取消引用。这是好习惯吗?我看到很多代码在TRY子句中创建了引用和解引用,但这意味着如果抛出异常,内存将无法正确处理。一些开发人员说他们不喜欢在finally子句中清理。我不完全理解为什么。
答案 0 :(得分:6)
您应该使用Using
声明:
Using testConn As New SqlConnection(...)
...
End Using
这将编译为Finally
,将在所有情况下处置。