Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) О лимите количества GDI и USER объектов (число прочтений - 60002 )
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
О лимите количества GDI и USER объектов
16. Мая 2007 :: 12:52
Печать  
Удалось отыскать ссылку на статью, которая на мой взгляд раскрывает тему с per-process и per-station ограничениями по объектам в windows

http://www.sybase.com/detail?id=1019174

Вот с такими кучами

SharedSection=2048,24576,2048


ограничение win2k3 svr на общее число USER объектов около 30K.

мне хватает Улыбка


добавка от fez:
Данная тема возникла в том числе и потому что в плагине vis1cpp существует утечка объектов GDI и USER.
« Последняя редакция: 03. Апреля 2008 :: 09:49 - fez »  

De quelle planète es-tu?
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #1 - 16. Мая 2007 :: 12:55
Печать  
Вырываешь из контекста.
  
Наверх
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: О лимите количества GDI и USER объектов
Ответ #2 - 16. Мая 2007 :: 13:01
Печать  
trdm писал(а) 16. Мая 2007 :: 12:55:
Вырываешь из контекста.

В смысле? Надо подробнее?

В этой статье описаны ограничения на процесс, и где они устанавливаются.
Секция Desktop Heap отвечает за ограничения в общем на станцию.

Вообще, вся статья полезная и подтверждается результатами тестов.

Я в свое время развернуто ее комментировал на тех форуме, но интереса не это вызвало.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #3 - 16. Мая 2007 :: 13:11
Печать  
Не, не подробнее, просто я так понял тема была о расчете возможного количества подключений с пом. "Сервера приложений для v7". Так сказать разжевывание что и почему.
Думаю эта ветка утонет и оторвется от родительской, а инфа нужная...
  
Наверх
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: О лимите количества GDI и USER объектов
Ответ #4 - 16. Мая 2007 :: 13:29
Печать  
trdm писал(а) 16. Мая 2007 :: 13:11:
Думаю эта ветка утонет

Будем говорить прямо: я тоже уверен, что утонет Улыбка Да и х. с ней Улыбка

А по объектам:
В свое время, кажется, я менял значения

HKLM/Software/Microsoft/Windows NT/CurrentVersion/Windows/USERProcessHandleQuota


А сегодня выставил значение в ветке

HKLM/SYSTEM/CurrentControlSet/Control/Session Manager/SubSystems/Windows


в части SharedSection в


SharedSection=2048,24576,2048


Это увеличило лимит объектов в общем на станцию.
Если, конечно, у меня не стало двоиться в глазах с чего-нибудь такого того чего-нибудь Улыбка
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #5 - 16. Мая 2007 :: 13:30
Печать  
По поводу ограничений на процесс есть еще в МСДН:
http://msdn2.microsoft.com/en-us/library/ms725486.aspx
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #6 - 16. Мая 2007 :: 13:35
Печать  
ИМХО, для обхода этих ограничений можно терминал-сервер использовать. Серверная компонента может запускать одинэсы кучками. Каждую кучку в отдельной терминальной сессии примерно таким образом:
1) Создать терминальную сессию и запустить в ней некий специальный процесс.
2) Специальный процесс запускает по OLE сколько надо одинэсов в кучке.
3) Взаимодействие с главным сервисом происходит либо через TCP/IP, либо через пайпы, либо общую память и т.д.
4) Удаленные машины взаимодействуют с сервисом, который взаимодействует с "сервисом кучки", который уже передает запрос свободному одинэсу из кучки Улыбка
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: О лимите количества GDI и USER объектов
Ответ #7 - 16. Мая 2007 :: 13:48
Печать  
...
И таким образом нюь васюки превращаются в центр мировой цивилизации Улыбка:)

Кстати, еще один вариант - можно просто попробовать запускать процессы под разными именами пользователей.
ИМХО, десктопы будут разными, вопрос решится сам собой.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #8 - 16. Мая 2007 :: 14:41
Печать  
Миш, я помню в свое время тема GDI обсуждалась на форуме...
Но я не могу понять откуда ноги растут у моей проблемы: под конец дня кол-во GDI объектов для моей сессии приближается к трем тысячам.
Захожу в журнал документов - увеличивается, выхожу - уменьшается, НО на показатель на 1 больше чем перед заходом.

У меня Win2003 TS, несколько сессий пользуют 1С очень активно, к концу дня иногда винды встают колом. Сперва перестает работать отображение тулбаров в любых приложениях, потом винды окончательно нагибаются и вылазит окошко в стиле Win 3.11 с надписью "Requested resource not awailible" и пипец.
Закрываю все приложения жрущие GDI, и все встает на свои места. В основном это Miranda и 1C.

Кто что посоветует?

Может у меня утечка где идет. Где копать?
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #9 - 16. Мая 2007 :: 14:43
Печать  
Утечка у тебя и идет....
А вот копать гда, это вопросссс...
  
Наверх
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #10 - 16. Мая 2007 :: 14:48
Печать  
У меня активно используются активиксы. Предполагаю что в них.
Но в журнале их нет!

А утечки при использовании классов могут влиять на использование GDI?
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #11 - 16. Мая 2007 :: 14:49
Печать  
Утечка GDI-ресурсов происходит в 1С-ке и без всяких ВК.
Можешь потестировать.
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #12 - 16. Мая 2007 :: 14:54
Печать  
Степ, ну не до 3000 объектов же Печаль
Я просто пытаюсь найти откуда все это ползет у меня. При старте у меня те же 200-300.
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #13 - 16. Мая 2007 :: 15:03
Печать  
Arta писал(а) 16. Мая 2007 :: 14:54:
Я просто пытаюсь найти откуда все это ползет у меня.

Ищи какую-нибудь тулзу для определения утечек.
спроси у гугля насчет gdi leaks detection tool
там кстати в пятой ссылке интересная статейка из MS KB: В компьютерах под управлением Windows XP приложения MFC вызывают утечку памяти в объектах GDI

ЗЫ: если подходящая тулза будет найдена и будут подозрения, что утечки в 1С++, то для точного диагноза можно будет погонять тулзу на сборке 1С++ с включенной Debug-информацией.
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: О лимите количества GDI и USER объектов
Ответ #14 - 16. Мая 2007 :: 15:41
Печать  
Вообще терять объекты можно в разных местах и это очень очень просто Печаль
Даже в svcsvc в свое время была утечка в FilterValue...

Я вроде прямых утечек в самом 1С не нашел, хотя говорят, что они есть.
Мне казалось, что это не утечки, а некий механизм повторного использования хендлов.
Но здесь, конечно, могу запросто ошибаться. Печаль

А уж в АктивИксах так и вообще поймать такую штуку проще простого.

Ну что можно тут делать.
Не должно быть такого, что при открытии-закрытии журнала число объектов постоянно растет.
Может расти 1 раз, а после количество имхо должно стабильно изменяться на некую дельту.

Если именно перманентно растет, надо, видимо, убирать последовательно компоненты и смотреть, что будет.
Поддержу Диму со Степаном, путь это ни разу не легкий Печаль

А вообще как же так?
У тебя юзеры под разными именами в терминалке работают?
Не должны они друг на друга влиять...

А в пределах одной сессии можно попробовать увеличить Desktop Heap, как я написал.
Это в данном случае не спортивно, но зато очень быстро. Улыбка
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #15 - 16. Мая 2007 :: 15:45
Печать  
Под разными именами конечно. Все таки домен Улыбка
Проблема вылазит не сразу, а под конец дня.


Ясно. Буду копать. Гемор конечно Печаль
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #16 - 18. Мая 2007 :: 08:35
Печать  
Проблема у меня оказывается гораздо интереснее.
Судя по таскманагеру кол-во GDI объектов увеличивается на один примерно каждые тридцать секунд. При этом 1С находится в фоне и ничего не делает.
В обработке ожидания никаких форм не открывается, только создаются объекты MetaDataWork, ODBCRecordSet.
Засада в общем Печаль
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #17 - 18. Мая 2007 :: 08:45
Печать  
А интервал обновления у тебе случаем не 30 сек.?
  
Наверх
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #18 - 18. Мая 2007 :: 08:54
Печать  
20 сек. примерно так и растут объекты.
Но в обработке у меня ничего нет.
Делается запрос к базе и если есть изменения в некоторых местах, то мне посылается письмо. Но изменений нет, соответственно код не выполняется.

Вот только в глобальнике вызов обработки идет так:
Служебное = СоздатьОбъект("Служебное");
Служебное.глОбработкаОжидания();

в контрукторе класса ничего. сам метод я уже написал почти ничего не делает.
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #19 - 18. Мая 2007 :: 08:59
Печать  
понаблюдал за своей. Не растет. Пробуй варианты...
хм. только главное окно:
USER/GDI => 549/314
Открыл журнал USER/GDI => 646/347
Закрыл USER/GDI => 549/323
Открыл  журналUSER/GDI => 646/347
ЗакрылUSER/GDI => 549/323
9 осталось объектов зарезервировано?

  
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #20 - 18. Мая 2007 :: 09:07
Печать  
Arta писал(а) 18. Мая 2007 :: 08:54:
Вот только в глобальнике вызов обработки идет так:
Служебное = СоздатьОбъект("Служебное");
Служебное.глОбработкаОжидания();

Это чистый объект или все-таки есть визуальная форма?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #21 - 18. Мая 2007 :: 09:19
Печать  
Я нашел  Смех
Иес!!!


В конструкторе этого класса у меня все-таки создавались объекты.
Сервис = СоздатьОбъект("Сервис");
Шрифт = Сервис.СоздатьШрифт("Tahoma");

Шрифт был переменной класса, но без Экспорта.
Прибил - утечек нет.

Альф, где косяк? Улыбка
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #22 - 18. Мая 2007 :: 09:24
Печать  
Arta писал(а) 18. Мая 2007 :: 09:19:
Альф, где косяк? Улыбка

Я, конечно, не Альф, но скажу. Косяк в отсутствии вызова Сервис.УдалитьШрифт.

Также косяк в том, что Сервис.СоздатьШрифт возвращает не объект, который сам удалит шрифт при собственном уничтожении, а код шрифта. А обязанность удаления возлагается на пользователя.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #23 - 18. Мая 2007 :: 09:24
Печать  
А УдалитьШрифт делаешь ?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #24 - 18. Мая 2007 :: 09:43
Печать  
Приехали. Сам дурак получается. Видел же оговорку Печаль


Всем спасибо, посыпаю голову пеплом.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #25 - 18. Мая 2007 :: 10:04
Печать  
По поводу объекта "Шрифт" можно обратить внимание на 1С++ - там реализован полноценный объект, который сам следит за уничтожением объектов.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #26 - 18. Мая 2007 :: 10:06
Печать  
А его можно подставлять в Сервис.ВыбратьЗначение?  Подмигивание
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #27 - 18. Мая 2007 :: 10:14
Печать  
Нельзя, т.к. у него нет свойства для получения хендла полученного шрифта, а ФормЕкс работает с хендлом напрямую Печаль
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #28 - 18. Мая 2007 :: 10:58
Печать  
Ясно. Вопрос исчерпан.

Хотя может вставить это свойство? Подмигивание
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #29 - 18. Мая 2007 :: 11:31
Печать  
Не совсем уверен, что это будет правильно Улыбка
В этом случае нарушается инкапсуляция объекта, и возможны различные пользовательские ошибки.
Например, пользовательский код через Сервис::УдалитьШрифт сначала удалить шрифт через хендл, а затем деструктор будет удалять еще раз, и баг - ну и т.п.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #30 - 18. Мая 2007 :: 11:33
Печать  
А... вон оно как устроено Улыбка
Тады ой...
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #31 - 28. Ноября 2007 :: 09:59
Печать  
Arta писал(а) 18. Мая 2007 :: 09:43:
Приехали. Сам дурак получается. Видел же оговорку Печаль


Всем спасибо, посыпаю голову пеплом.


А ведь ты - power user   Смех ну это я так в шутку, чур без обид. Очень довольный
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #32 - 28. Февраля 2008 :: 09:11
Печать  
Мне помогло вот это решение - добавить ТЗ на форму отчета - для устранения проблемы вылетов 1С, связанных с превышением количества объектов USER. Решение взято отсюда:

trad писал(а) 30. Августа 2007 :: 07:23:
Я однажды поимел проблем из бага в 1С.
Но тогда росло количество объектов USER.
Выглядит это так: открываешь форму отчета/обработки, закрываешь - получаем +2 к USER
Если такая форма открывается ОЧЕНЬ часто (а у меня это была форма ввода количества при подборе), то объекты в конце концов кончаются и это вело либо к падению 1С в методе CGetDoc7::LayoutControl либо к полному зависанию винды. Было установлено что "утекают" менюшки.
Решается проблема добавлением на форму обработки ТЗ (пусть даже не видимой).
Отличие в том, что, при наличие ТЗ на форме обработки, меню "Действия" расширяется набором пунктов от ТЗ.
И замечено что почти все возможные в 1С формы содают меню "Действия" более чем из одного набора пунктов. Кроме формы обработки/отчета без ТЗ - в этом случае меню из одного набора.
Косяк я думаю в работе CMenu7.


В течение года не мог разобраться, почему вылетают роботы на 1С (у меня их было 3 штуки). Эти роботы периодически запускали отчеты для всяхк нужд. Соответственно каждый запуск увеличивал число USER и в неопределенный момент происходил вылет базы. Пришлось тогда даже сделать проверку на "живость" (в смысле - живой-не живой) робота - кажый робот проверял двух остальных. В случае "неответа" - робот перезапускал базу другого.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #33 - 28. Февраля 2008 :: 10:08
Печать  
Содержимое данного сообщения было перенесено СЮДА.
  
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: О лимите количества GDI и USER объектов
Ответ #34 - 31. Июля 2008 :: 11:33
Печать  
Хочу вернуться к больной теме - утечке по GDI при использовании активиксов.

При использовании активиксов на форме после закрытия формы счетчик объектов GDI стабильно растет.
Величина прироста зависит только от навороченности активикса и является постоянной. Ну не могут же активиксы от разных производителей все поголовно течь.
Грешу все-таки на АктивИкс (Степан, прости, если не прав Улыбка).
При очень активной работе юзеров с такими формами ситуация получается очень нехорошая.
В клинических случаях даже пришлось увеличить лимит на количество объектов GDI.

Очень хочется проблему решить. Прошу помощи у тех, кому это тоже мешает.
И еще. Чем можно посмотреть количество объектов GDI в чужой терминальной сессии?
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #35 - 31. Июля 2008 :: 12:11
Печать  
vip писал(а) 31. Июля 2008 :: 11:33:
И еще. Чем можно посмотреть количество объектов GDI в чужой терминальной сессии?

Секретная прога - taskmgr.exe Улыбка
Говоришь показать процессы от всех юзверей, добавляешь колонку с GDI и сортируешь по наименованию.
1cv7s.exe будет сверху Улыбка


P.S. Рядом есть еще колонка с именем пользователя.
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #36 - 31. Июля 2008 :: 12:13
Печать  
vip писал(а) 31. Июля 2008 :: 11:33:
Грешу все-таки на АктивИкс (Степан, прости, если не прав Улыбка).


Парт задание - опоить Степана пывом до синих огурцов. После этого на утро сказать ему, что он поклялся к вечеру все исправить.

P.S. GDI тоже уже в печенках Печаль
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: О лимите количества GDI и USER объектов
Ответ #37 - 31. Июля 2008 :: 12:18
Печать  
Arta писал(а) 31. Июля 2008 :: 12:11:
vip писал(а) 31. Июля 2008 :: 11:33:
И еще. Чем можно посмотреть количество объектов GDI в чужой терминальной сессии?

Секретная прога - taskmgr.exe Улыбка
Говоришь показать процессы от всех юзверей, добавляешь колонку с GDI и сортируешь по наименованию.
1cv7s.exe будет сверху Улыбка


P.S. Рядом есть еще колонка с именем пользователя.

Издеваешься на дедом? Улыбка
В чужих сеансах показывает ноль. Потому и спросил.
  
Наверх
ICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: О лимите количества GDI и USER объектов
Ответ #38 - 31. Июля 2008 :: 12:20
Печать  
Arta писал(а) 31. Июля 2008 :: 12:13:
vip писал(а) 31. Июля 2008 :: 11:33:
Грешу все-таки на АктивИкс (Степан, прости, если не прав Улыбка).


Парт задание - опоить Степана пывом до синих огурцов. После этого на утро сказать ему, что он поклялся к вечеру все исправить.

P.S. GDI тоже уже в печенках Печаль

Последний раз он меня самого видел в форме синего огурца Очень довольный
  
Наверх
ICQ  
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #39 - 04. Августа 2008 :: 14:34
Печать  
vip писал(а) 31. Июля 2008 :: 11:33:
Хочу вернуться к больной теме - утечке по GDI при использовании активиксов.

При использовании активиксов на форме после закрытия формы счетчик объектов GDI стабильно растет.
Величина прироста зависит только от навороченности активикса и является постоянной. Ну не могут же активиксы от разных производителей все поголовно течь.
Грешу все-таки на АктивИкс

Сделал простой тест:
пустая конфигурация без загруженных ВК (вообще никаких!!)
внешняя обработка с парой кнопок
система WinXP Pro SP2
Несколько раз открыл/закрыл обработку
посмотрел счетчик GDI
еще один раз открыл/закрыл обработку
посмотрел GDI - счетчик увеличился на 6, и так при каждом открытии/закрытии

Повторил то-же самое под DPlus instrumentation.
Нашел источник утечек - uxtheme.dll
Выполнил в консоли
Код
Выбрать все
net stop themes 


Повторил вышеуказанные действия.
Утечек не обнаружил.

В тестовой конфе добавил загрузку 1С++ (версия 3.0.1.10) и в тестовой обработке добавил создание на форме контрола OWC.Spreadsheet (специально выбрал контрол понавороченнее).
Утечек GDI-ресурсов не обнаружил.

Вот такой вот детектив.
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #40 - 04. Августа 2008 :: 14:38
Печать  
И еще раз приведу ссылку на статью в MS KB: В компьютерах под управлением Windows XP приложения MFC вызывают утечку памяти в объектах GDI
Цитата:
При запуске приложений MFC (библиотеки базовых классов Microsoft) в компьютере под управлением Microsoft Windows XP с пакетом обновления 2 (SP2) происходят утечки памяти объектов GDI при создании или удалении дочерних окон. Чтобы увидеть утечки памяти, посмотрите GDI-объекты процесса в диспетчере задач.

Подобные проблемы возникают также в компьютерах под управлением Windows Server 2003 при запуске службы тем. В Windows Server 2003 служба тем отключена по умолчанию.
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #41 - 04. Августа 2008 :: 14:52
Печать  
Степ, у меня 1С вертится на Win2003, а на XP давно уже SP3.

Кроме того в терминал-сервере по умолчанию темы отключены.

P.S. Эту причину проблемы знаю Подмигивание
  
Наверх
 
IP записан
 
mash
1c++ donor
Отсутствует


1C++ v. 3.0.1.23

Сообщений: 148
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: О лимите количества GDI и USER объектов
Ответ #42 - 03. Ноября 2009 :: 14:12
Печать  
Нашел временное решение - если в конфигураторе, после открытия конфигурации, запустить процедуру Intellisense Update1CppInts (которая просто открывает и закрывает формы модулей КОП), то количество GDI объектов резко падает до 300-400 штук.
  

Поспешность наносит ущерб
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Bob
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 5
Зарегистрирован: 24. Июня 2010
Re: О лимите количества GDI и USER объектов
Ответ #43 - 10. Февраля 2011 :: 08:16
Печать  
Была такая проблема...
Если перед открытием обработки вызывать СтатусВозврата(0),
то количество объектров не растет!
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: О лимите количества GDI и USER объектов
Ответ #44 - 10. Февраля 2011 :: 08:51
Печать  
Bob писал(а) 10. Февраля 2011 :: 08:16:
Была такая проблема...
Если перед открытием обработки вызывать СтатусВозврата(0),
то количество объектров не растет!

Ну если это сделать перед открытием в ПриОткрытии(), то конечно не растет, т.к. обработка не откроется Улыбка
Подробней, пожалуйста.
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать