Відмінності між версіями «Об'єкти USER і GDI»
Рядок 10: | Рядок 10: | ||
[[Файл:125абс_(1).png]] | [[Файл:125абс_(1).png]] | ||
− | <p style="font-family: century;font-size: 14pt;">Зверніть увагу, що кнопка «Пуск» знаходиться в лівому нижньому кутку, тоді як інша частина панелі завдань знаходиться у верхній частині екрана. Робочий стіл став чорним, а бічна панель втратила більшість своїх кольорів. | + | <p style="font-family: century;font-size: 14pt;">Зверніть увагу, що кнопка «Пуск» знаходиться в лівому нижньому кутку, тоді як інша частина панелі завдань знаходиться у верхній частині екрана. Робочий стіл став чорним, а бічна панель втратила більшість своїх кольорів. Це може виглядати інакше, але все одно можна побачити, які забавні речі починають відбуватися в таких випадках, позбавляючи можливості нормально взаємодіяти з робочим столом. Ось як став виглядати екран, після натиснення на кнопку «Пуск»:</p> |
[[Файл:127абс_(2).png]] | [[Файл:127абс_(2).png]] | ||
− | <p style="font-family: century;font-size: 14pt;">На відміну від об'єктів USER, об'єкти GDI не нараховуються з куп робочого столу; натомість на системах Windows XP | + | <p style="font-family: century;font-size: 14pt;">На відміну від об'єктів USER, об'єкти GDI не нараховуються з куп робочого столу; натомість на системах Windows XP, на якій не встановлено служби терміналів, вони розподіляються із загального вивантажування пулу; на всіх інших системах вони розподіляються з пулу сеансів, для кожного сеансу окремо. |
Команда відладчика ядра "!vm 4" відображає загальну інформацію про віртуальну пам'ять, включаючи інформацію про сеанс в кінці. На системі Windows XP вона показує, що вивантажуваний пул сеансу не використаний:</p> | Команда відладчика ядра "!vm 4" відображає загальну інформацію про віртуальну пам'ять, включаючи інформацію про сеанс в кінці. На системі Windows XP вона показує, що вивантажуваний пул сеансу не використаний:</p> | ||
[[Файл:127абс_(1).png]] | [[Файл:127абс_(1).png]] | ||
− | |||
− | + | <p style="font-family: century;font-size: 14pt;">На Windows Vista і в наступних системах максимум вивантажується пулу сеансу і розмір простору сеансу не відображаються, оскільки вони є змінними величинами. Показники використання вивантажування пулу сеансу на цих системах обмежуються або обсягом адресного простору, до якого вони можуть вирости, або межею виділення системних ресурсів, залежно від того, який параметр буде менший. Ось результати виконання цієї команди на системі Windows 7, що відображають поточні показники використання вивантажування пулу сеансів:</p> | |
− | <p style="font-family: century;font-size: 14pt;"> | + | |
− | + | ||
− | + | ||
− | + | ||
[[Файл:131абс_(2).png]] | [[Файл:131абс_(2).png]] | ||
Рядок 33: | Рядок 28: | ||
[[Файл:131абс_(1).png]] | [[Файл:131абс_(1).png]] | ||
− | <p style="font-family: century;font-size: 14pt;">Щоб побачити розподіл об'єктів GDI за тегами пулів в Windows XP | + | <p style="font-family: century;font-size: 14pt;">Щоб побачити розподіл об'єктів GDI за тегами пулів в Windows XP без встановлених служб терміналів, можна використовувати утиліту Poolmon з драйвера Windows Kit (WDK). Ось як виглядають результати роботи Poolmon, після того, як Testlimit вичерпав вивантажуваний пул в системі Windows XP. |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | |||
− | |||
На щастя, більшість помилок об'єктів GDI і USER пов'язані з перевищенням певним процесом обмеження в 10000 об'єктів на процес, так що немає потреби в проведенні більш докладного дослідження, що ставить метою з'ясувати, який процес відповідальний за вичерпання пулу сеансу або виділення об'єктів GDI.</p> | На щастя, більшість помилок об'єктів GDI і USER пов'язані з перевищенням певним процесом обмеження в 10000 об'єктів на процес, так що немає потреби в проведенні більш докладного дослідження, що ставить метою з'ясувати, який процес відповідальний за вичерпання пулу сеансу або виділення об'єктів GDI.</p> | ||
[http://blogs.technet.com/b/mark_russinovich/archive/2010/04/06/3323382.aspx Преодолевая границы Windows: объекты USER и GDI (часть 2)] | [http://blogs.technet.com/b/mark_russinovich/archive/2010/04/06/3323382.aspx Преодолевая границы Windows: объекты USER и GDI (часть 2)] |
Версія за 13:27, 21 травня 2015
Об'єкти GDI являють собою ресурси інтерфейсу графічного пристрою, такі як шрифти, точкові малюнки, кисті, пір'я і контексти пристроїв (поверхні конструктора). Як і у випадку з об'єктами USER, диспетчер вікон обмежує процеси використанням не більше ніж 10000 об'єктів GDI, що ви можете перевірити за допомогою Testlimit з параметром -g:
Щоб побачити, скільки об'єктів GDI використовує процес, ви можете звернутися до сторінки Performance в діалоговому вікні властивостей процесу в Process Explorer, а також додати колонку GDI Objects в Process Explorer, щоб переглянути параметри використання об'єктів GDI для процесів:
Як і у випадку з об'єктами USER, 16-розрядна функціональна сумісність означає, що об'єкти GDI мають 16-розрядні ідентифікатори, обмежуючи їх кількість 65535 екземплярами на сеанс. Ось як виглядає робочий стіл після того, як Testlimit досяг цього обмеження на 64-розрядній системі Windows Vista:
Зверніть увагу, що кнопка «Пуск» знаходиться в лівому нижньому кутку, тоді як інша частина панелі завдань знаходиться у верхній частині екрана. Робочий стіл став чорним, а бічна панель втратила більшість своїх кольорів. Це може виглядати інакше, але все одно можна побачити, які забавні речі починають відбуватися в таких випадках, позбавляючи можливості нормально взаємодіяти з робочим столом. Ось як став виглядати екран, після натиснення на кнопку «Пуск»:
На відміну від об'єктів USER, об'єкти GDI не нараховуються з куп робочого столу; натомість на системах Windows XP, на якій не встановлено служби терміналів, вони розподіляються із загального вивантажування пулу; на всіх інших системах вони розподіляються з пулу сеансів, для кожного сеансу окремо. Команда відладчика ядра "!vm 4" відображає загальну інформацію про віртуальну пам'ять, включаючи інформацію про сеанс в кінці. На системі Windows XP вона показує, що вивантажуваний пул сеансу не використаний:
На Windows Vista і в наступних системах максимум вивантажується пулу сеансу і розмір простору сеансу не відображаються, оскільки вони є змінними величинами. Показники використання вивантажування пулу сеансу на цих системах обмежуються або обсягом адресного простору, до якого вони можуть вирости, або межею виділення системних ресурсів, залежно від того, який параметр буде менший. Ось результати виконання цієї команди на системі Windows 7, що відображають поточні показники використання вивантажування пулу сеансів:
Цілком очікувано, що головний інтерактивний сеанс, Session 1, використовує велику частину вивантажування пулу сеансу. Можна використовувати інструмент Testlimit з параметром "-g 0", щоб побачити, що відбувається, коли закінчується місце для зберігання об'єктів GDI. Число, що визначене після -g є розміром об'єктів точкових малюнків GDI, що виділяються Testlimit, при цьому число 0 вказує Testlimit виділяти настільки великі об'єкти, наскільки це взагалі можливо. Ось результати роботи Testlimit на 32-розрядної системі Windows XP:
Щоб побачити розподіл об'єктів GDI за тегами пулів в Windows XP без встановлених служб терміналів, можна використовувати утиліту Poolmon з драйвера Windows Kit (WDK). Ось як виглядають результати роботи Poolmon, після того, як Testlimit вичерпав вивантажуваний пул в системі Windows XP. На щастя, більшість помилок об'єктів GDI і USER пов'язані з перевищенням певним процесом обмеження в 10000 об'єктів на процес, так що немає потреби в проведенні більш докладного дослідження, що ставить метою з'ясувати, який процес відповідальний за вичерпання пулу сеансу або виділення об'єктів GDI.