为什么下面的代码在执行时会导致内存泄漏?只有当我在vb.net语言中使用Microsoft Visual Studio 2005或2008时才会出现错误。如果我用c#是,没有问题。
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()
如何知道存在内存泄漏?使用垃圾收集的语言怎么可能出现内存泄漏?如果您得到一条明确告诉您存在内存泄漏的错误消息,则可能是数据库驱动程序本身存在问题,而这个问题可能是用任何语言编写的。基于你所使用的。net语言,针对该驱动程序编写任何类型的。net代码都不会造成任何问题。
您发布的代码看起来不错。尽管VB。. NET有一个Using
语句可能会有所帮助(至少会使你的代码更容易阅读!)。在给出更多的建议之前,你需要发布更多的信息。
你可能想看看这个老答案:有没有像样的c#分析器?尽管特定于c#,但所有。net内存分析器都应该适用于VB。