.NET内存泄漏和最佳实践

时间:2012-05-08 21:03:39

标签: .net vb.net

在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子句中清理。我不完全理解为什么。

1 个答案:

答案 0 :(得分:6)

您应该使用Using声明:

Using testConn As New SqlConnection(...)
    ...
End Using

这将编译为Finally,将在所有情况下处置。