Я создал оболочку DLL для базы данных, которая дает мне объектный уровень API для моей базы данных. У меня возникают проблемы с тем, что сборщик мусора в VB.net, похоже, не убирает беспорядок, когда я уничтожаю объекты. Я относительно уверен, что сделал все, чтобы очистить объект, включая реализацию интерфейса IDispose на каждом объекте, чтобы уничтожить все.
Когда все становится ужасно, когда я создаю экземпляр объекта, я выполняю чтение базы данных и заполняю объект на основе его соответствующей записи в базе данных. Это работает хорошо, однако, когда я повторяю создание и уничтожение 1000-х и 1000-х этих объектов, память просто продолжает увеличиваться.
Тогда мне пришло в голову: Может ли быть так, что мои объекты не будут очищены, потому что я использую общую ссылку на базу данных ODBC внутри своих объектов? сохранит ли это мои объекты, несмотря на все мои усилия?
Например: ( примечание: clsSharedConfig.g_objDatabaseConn - это общий экземпляр ODBCConnection)
Dim cmd As New OdbcCommand("SELECT * FROM FILES WHERE CID = " & p_lngID, clsSharedConfig.g_objDatabaseConn)
Dim data As OdbcDataReader
Try
cmd.CommandType = CommandType.Text
data = cmd.ExecuteReader()
Кто-нибудь может предложить какую-то другую причину, по которой я это произвожу? Я не хочу прибегать к пиханию GC. Собирайте повсюду статистику, чтобы держать это под контролем!
Спасибо,
Andrew