在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
Run Code Online (Sandbox Code Playgroud)
这里连接引用是在TRY子句之前创建的,并在TRY子句之后初始化.我相信即使抛出异常,连接也会被关闭并取消引用.这是好习惯吗?我看到很多代码在TRY子句中创建了引用和解引用,但这意味着如果抛出异常,内存将无法正确处理.一些开发人员说他们不喜欢在finally子句中清理.我不完全明白为什么.
你应该只使用这个Using声明:
Using testConn As New SqlConnection(...)
...
End Using
Run Code Online (Sandbox Code Playgroud)
这将编译为Finally将在所有情况下处置的.
| 归档时间: |
|
| 查看次数: |
2175 次 |
| 最近记录: |