Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Windows > Не хватает окон


Автор: Karadul 24.7.2012, 18:07
Иногда не могу открыть новое окно (запустить таскменеджер, контекстное меню и т.д.). Закрою какую-нибуть программу - все работает.

Windows Xp.

Автор: 586 25.7.2012, 04:36
1. открой диспетчер задач
2. в меню выбери "Процессы -> Вид -> Выбрать столбцы".
3. в появившемся диалоге выбери:
  [v] Объекты GDI
  [v] Объекты USER
  [v] Счётчик дескрипторов
Нажми OK.
И теперь посмотри в списке процессов, если ли какой-нибудь процесс, котрый потребляет много этих ресурсов. И заодно, графу "память" проверь.

Автор: mihanik 25.7.2012, 05:19
Цитата

Вопрос.
У меня следующая проблема. У меня на компьютере  одновременно работает очень много разных программ: 1С, Блокнот,  вебсервер, базы данных,  и т.д…  Наступает момент, когда невозможно открыть ни одного нового окна, 1С не запускается, любые другие программы не запускаются, пока не закроешь, что-нибудь из того  что уже открыто. При этом полно свободной памяти и ОЗУ, и на жёстком диске. Но Windows, похоже, на это наплевать. Выглядит это так,  что искусственно заданы строгие ограничения на использования ресурсов. 
Кто-нибудь знает как можно решить мою проблему?
Ответ.
Возможно, исчерпаны User либо GDI-объекты.
Полный ответ.
Объекты пользовательского интерфейса  (User objects).
Объекты пользовательского интерфейса поддерживают только один маркер на  объект. Процессы не могут наследовать или дублировать маркеры к пользовательским объектам. Процессы в одном сеансе не могут сослаться на пользовательский маркер в другом сеансе.
Есть теоретический предел в  65 536 пользовательских маркеров на сеанс. Однако, максимальное число пользовательских маркеров, которые могут быть открыты за сеанс, обычно ниже, так как это зависит от размера  доступной оперативной памяти. Существует предел количества используемых пользовательских маркеров. Чтобы изменить этот предел, измените  значение системного реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\USERProcessHandleQuota
Значение этого ключа  может быть установлено в пределах от 200 до 18 000.
Для решения вашей проблемы поставьте значение данного ключа равным 18 000
Объекты графического интерфейса устройств (GDI objects)
Объекты графического интерфейса устройств поддерживают только один маркер на объект. Маркеры  объектов графического интерфейса устройств являются собственными для каждого  процесса. Таким образом, только тот процесс, который создал объект графического интерфейса устройств, может использовать объектный маркер.
Есть теоретический предел в  65 536 маркеров графического интерфейса устройств на сеанс. Однако, максимальное число маркеров графического интерфейса устройств, которые могут быть открыты за сеанс, обычно ниже, так как это  зависит от размера  доступной оперативной памяти.
    Windows 2000: есть предел 16 384 маркеров графического интерфейса устройств за сеанс.
Есть также заданный по умолчанию предел количества  процессов  маркеров графического интерфейса устройств. Чтобы изменить этот предел, установите следующее значение системного реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\GDIProcessHandleQuota
Это значение может быть установлено в промежутке от 256 до 65 536.
    В Windows 2000: Это значение может быть установлено в промежутке от  256 до 16 384.
Для решения вашей проблемы поставьте значение данного ключа равным 65 536
Замечание!
В том случае, если система начнёт вести себя нестабильно, следуют методом подбора уменьшить соответствующие значения ключей реестра.




Добавлено через 1 минуту и 56 секунд
Кстати!!!

http://forum.vingrad.ru/forum/topic-272863.html

Автор: Karadul 8.8.2012, 05:52
mihanik, то, что ты написал, если верить документации - лимиты на процесс. Их менять имеет смысл, если процессы друг другу не мешают. А у меня - наоборот.

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Windows
Код

SharedSection=1024,6144,512

Увеличил средний параметр - пока реакции 0. Надо рестартовать шindows?

Есть какая-нибудь програмка для эмуляции проблемы?

Автор: mihanik 8.8.2012, 18:11
Сравни

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\USERProcessHandleQuota
Цитата(mihanik @  25.7.2012,  05:19 Найти цитируемый пост)
Наступает момент, когда невозможно открыть ни одного нового окна, 1С не запускается, любые другие программы не запускаются, пока не закроешь, что-нибудь из того  что уже открыто.

и

Цитата(Karadul @  24.7.2012,  18:07 Найти цитируемый пост)
Закрою какую-нибуть программу - все работает.



И при чём тут 
Цитата(Karadul @  8.8.2012,  05:52 Найти цитируемый пост)
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Windows


, когда было прямое указание править



Цитата(mihanik @  25.7.2012,  05:19 Найти цитируемый пост)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\USERProcessHandleQuota

и
Цитата(mihanik @  25.7.2012,  05:19 Найти цитируемый пост)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\GDIProcessHandleQuota



Кстати!
Винду перестартовать нужно.

Автор: Karadul 8.8.2012, 18:54
Цитата(mihanik @  8.8.2012,  18:11 Найти цитируемый пост)
 прямое указание

smile

Я почитал документацию, и там написано, что это - лимиты на процесс. Откуда ты свою цитату взял - я не знаю.

Автор: mihanik 8.8.2012, 20:01
http://support.microsoft.com/kb/951009/ru

Я всё сказал.
Дальнейший спор для меня теряет смысл.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)