Меняет ли установка Visual Studio сборку мусора в .Net? - PullRequest
0 голосов
/ 16 июня 2009

Я пытаюсь отладить некоторые утечки ресурсов, особенно соединения Oracle.

На моем локальном компьютере, проходя через Page_Load (), я вижу соединения, созданные в БД, отслеживая v $ session.

Как только я выхожу из Page_Load, все соединения закрываются.

Тот же код, выполняемый на сервере dev (W3k, IIS6), НЕ освобождает ресурсы - соединения в соответствии с БД все еще существуют.

Я пробовал это с включенным пулом соединений и без него, и это то же самое - локально это нормально, на сервере он протекает.

Я проверил, что .net framework одинакова в обоих местах и ​​код одинаков. Чего мне не хватает?

Ответы [ 2 ]

2 голосов
/ 16 июня 2009

У сборщика мусора есть три различных режима работы: GC на сервере, GC на рабочей станции и одновременная на рабочей станции. Каждый из них ведет себя по-своему и оптимизирован для различных типов приложений. Это может быть то, что вызывает другое поведение. В частности, поведение может измениться для данного параметра в зависимости от наличия одного или нескольких процессоров. Загляните в блог Tess Ferrandez для более подробного объяснения.

0 голосов
/ 16 июня 2009

Всякий раз, когда вы используете ограниченные ресурсы (например, соединения с базой данных) в .NET и ожидаете очистки ресурсов, вы должны явно вызывать Dispose () для объекта, чтобы убедиться, что он очищен и освобожден должным образом.

Что касается Visual Studio, меняющего сборку мусора, я не понимаю, почему это так. Сборщик мусора может вести себя по-разному, потому что вы работаете на другой машине с другим профилем памяти. Вы не можете ожидать, что сборщик мусора будет вести себя определенным образом, особенно на разных машинах. Но, похоже, у вас есть большая проблема с неправильным удалением соединения с базой данных.

...