andrzejn: (Default)
Андрій Новосьолов ([personal profile] andrzejn) wrote2008-08-22 11:40 am

Рабочее

В последнюю неделю-две SQL Server Management Studio 2005 вдруг начала часто и непонятно падать. Проследил проблему до счётчика "GDI Objects" в Task Manager: для процесса SqlWb.exe количество открытых объектов колебалось в районе 9900, а когда подходило к 10000, тогда процесс и падал. Количество это совершенно ненормальное.

Подумав, отключил Windows XP Themes. Счётчик GDI Objects тут же упал до 200-300, всё заработало.

Другие приложения (включая куда более толстые и сложные окна Visual Studio .NET) от этой проблемы не страдают. У коллег всё нормально. Где же и что же я у себя поломал?

[identity profile] snowman-fedya.livejournal.com 2008-08-22 09:05 am (UTC)(link)
я эту службу сразу отключаю нафиг. ибо нефиг.

зависит от конкретной темы. некоторые приложения любят запускать что-то (возможно, треды) в отдельных скрытых окнах, а на эти окна, скомпилённые микрофтовсим си-компилером, расходуются ресурсы как на натуральные, причём закрытие окон ресурсы не высвобождает (если службы "темы" выключена, то освобождает нормально).

[identity profile] snowman-fedya.livejournal.com 2008-08-22 10:43 am (UTC)(link)
тему, небось, другую включил, в которой вызов стандартной функции подменяется на идущий через службу "темы". вот кнопки "закрыть-свернуть-развернуть" в стиле w2k обычно рисуются через gdi, а если повесить тему, скажем, "луна" -- то через службу. вот службовые ресурсы и не выключаются.

у микрософта это частое явление. постоянно их программы "текут". причём это в компилятор "встроено", так что переписывая сам код, от этого не избавишься :( а с профилерами они тем более не возятся

[identity profile] snowman-fedya.livejournal.com 2008-08-22 10:50 am (UTC)(link)
ну, может ещё что-то ставил. или само поставилось :)

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

[identity profile] faceted-jacinth.livejournal.com 2008-08-22 11:08 am (UTC)(link)
Лол. Так ведь Region - это просто объединение ректанглов и используется практически исключительно в служебных целях, для неперерисовки окна целиком.
livelight: (Default)

[personal profile] livelight 2008-08-22 09:32 am (UTC)(link)
SqlWb.exe - это SQL-сервер или клиент? А то непонятно, нахрена вообще серверу GDI-объекты.

А вообще, во времена, когда я на голом WinAPI что-то писал, я так толком и не понял, кто и когда эти ресурсы высвобождает. Запросил себе, например, шрифт - и пользуйся им по дескриптору, но вызова "освободить ненужный более шрифт" не предлагалось.
livelight: (Default)

[personal profile] livelight 2008-08-22 10:19 am (UTC)(link)
А вот не помню уже.
(Глянул в сорцы) У меня там был только один Bitmap, который перевыделялся каждый раз при ресайзе окна, и я ему тогда делал DeleteObject(). Больше вроде ничего не удалял. Менюшки контекстные создавал при каждом случае, но никогда не удалял - однако же, ресурсы не утекали вроде никуда.