我有一个问题,我的 .NET 3.5 应用程序导致 IIS 工作进程不断消耗内存并且永远不会释放它,直到应用程序开始抛出与内存相关的错误并且我必须回收 IIS 工作进程。我注意到的另一件事是,与 Oracle DB 服务器的连接也不会关闭,并且会保持打开状态,直到我回收 IIS 工作进程(据我所知,我正在正确关闭 Oracle 连接)。从我在其他类似帖子中读到的内容来看,GC 应该清理未使用的内存并允许重新分配它,但这显然不会在这里发生(我在远程主机和本地主机上都观察到同样的问题。我将假设这不是与 IIS 设置相关的问题,而是我没有在我的代码中进行适当的清理工作;我应该看什么?谢谢。
这是我与查询 Oracle DB 相关的代码:
Using conn As New OracleConnection(oradb)
Try
cmd.Connection = conn
daData = New OracleDataAdapter(cmd)
cbData = New OracleCommandBuilder(daData)
dtData = New DataTable()
dtDADPLIs = New DataTable()
conn.Open()
cmd.CommandText = "SELECT * FROM TABLE" _
daData.Fill(dtData)
cmd.CommandText = "SELECT * FROM TABLE2"
daData.Fill(dtDADPLIs)
QueryName = "SD_TIER_REPORT"
WriteQueryLog(QueryName)
Catch ex As OracleException
'MessageBox.Show(ex.Message.ToString())
Finally
conn.Close()
conn.Dispose()
End Try