Why does the code below cause a memory leak when executed? The error only happens when I use Microsoft Visual Studio 2005 or 2008 in vb.net language. If I use C # is, there is no problem.
Dim strCon As String = "data source=SRV-10G;user id=Test;password=1234"
dim factory as DbProviderFactory = DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
Dim conexao As IDbConnection = factory.CreateConnection
conexao.ConnectionString = strCon
conexao.Open()
For cont As Integer = 1 To 100000
Dim comando As IDbCommand = conexao.CreateCommand()
comando.CommandText = "Select * from tabela where campo = " & cont
Dim leitor As IDataReader = comando.ExecuteReader
While leitor.Read
Dim v As String = leitor.GetValue(1).ToString
End While
leitor.Close()
leitor.Dispose()
comando.Dispose()
Next
conexao.Close()
conexao.Dispose()
The code you have posted looks OK. Although VB.NET has a
Using
statement which may help (ad will at least make your code easier to read!). You'll need to post more info before any more suggestions can be given.You may want to check this old answer: Any decent C# profilers out there? Although specific to c#, all the .NET memory profilers should work for VB.NET as well.