2013-12-18 56 views
2

我有一個使用SQL連接和SQL對象(如數據表和命令)的vb.net應用程序。現在,我計劃測試內存問題,看看是否有什麼不對有關內存..經過一段時間後,在vb.net應用程序中專用KB中分配了超過1000 MB的內存

我已經插入計時器,並使其顯示具體形式在我的應用程序每1秒,然後關閉它..

該表格包含非常非常簡單的表單加載代碼,只是從SQL Server(獨立組合框和數據網格)中填充組合框。

現在,在內存選項卡中的資源監視器中,尤其是在專用KB字段中,內存正在成長並永不釋放,它達到了1 GB以上!

爲什麼經常發生這種情況?

注:

  • Vb.net
  • VS 2012
  • SQL Server 2008中
  • 使用的DevExpress組件
  • 使用連接後調用Dispose()

我看過GDI對象內存,它釋放每一個窗體關閉,所以我認爲這不是GDI內存問題。

定時器工作時間小於5分鐘。

任何想法?

+0

嘗試使用DebugDiag創建內存轉儲並查看哪些對象使用大部分內存。 – Matt

+2

我們可以在計時器之前和周圍看到一些代碼嗎? – 5uperdan

+0

Dim o As new onCommands o.Show() –

回答

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 
相關問題