在很短的时间之后,在vb.net应用程序中的私有KB中分配了超过1000 MB

时间:2013-12-18 13:56:25

标签: sql sql-server vb.net memory gdi

我有一个使用SQL连接和SQL对象(如数据表和命令)的vb.net应用程序。现在我计划测试内存问题,看看内存是否有问题......

我已插入计时器并使其在我的应用程序中每1秒显示一次特定表格并将其关闭..

此表单包含非常简单的表单加载代码,只是填充SQL Server中的组合框(独立组合框和数据网格)。

现在,在内存选项卡中的资源监视器中,特别是在私有KB字段中,内存正在成长并且从未发布,它已达到1 GB甚至更多!

为什么经常这样?

注意:

  • Vb.net
  • VS 2012
  • SQL Server 2008
  • 使用DevExpress组件
  • 使用Connections后调用Dispose()

我观看了GDI对象的内存,它会释放每个表单,所以我认为这不是GDI内存问题。

计时器工作时间小于5分钟。

任何想法?

1 个答案:

答案 0 :(得分:0)

我建议,为安全起见,请考虑使用“使用”关键字。这将确保一旦您的连接超出范围,它们就会被处理掉。任何实现IDisposable的对象都可以与Using Statement一起使用。

Using conn as new SQLConnection(connString)
    'Do some stuff with your SQL connection
End Using

这只是一个很好的做法,意味着您不必使用Try ...最后确保关闭连接。

您还需要查看内存泄漏的其他可能原因。也可能需要考虑如何显示表单的范围。尝试制作打开表单的代码也可以处理表单;

Using frmFoo as new frmMain
   frmFoo.Show()
End Using