17 лет назад 31 октября 2006 в 16:51 763
На моем рабочем компьютере установлена Windows 98, памяти — 256 Мбайт. Ничто особенно не должно нагружать память, но все приложения через некоторое время выдают сообщения вроде "Out of Memory". И еще появились странные глюки в некоторых приложениях, например, работают не все пункты меню. Поиск вирусов ничего не дает. В чем дело?

то достаточно типичное проявление одного из главных недостатков Windows 9x. Ядро операционной системы Windows 9x, ее API (Application Programming Interface) состоит из трех компонентов — KERNEL (менеджер памяти, файлового ввода-вывода, процессов, потоков и т. д.), USER (менеджер ввода-вывода) и GDI (Graphics Device Interface, менеджер графического интерфейса). Каждый компонент представляет собой связанную пару файлов (DLL и EXE), один из которых 16-разрядный, а второй — 32-разрядный.Системные ресурсы — это, по сути, пять блоков памяти (heaps), используемые этими компонентами для хранения данных (положение окон, шрифты, ввод с клавиатуры и мыши и т. п.). Для USER выделены один 16-битный блок и два 32-битных, а для GDI — один 16-битный и один 32-битный. При этом 32-битные ресурсы практически никогда не вызывают проблем, а вот 16-битные — ввиду того, что их объем для увеличения быстродействия ограничен 64 килобайтами, — нередко оказываются полностью израсходованными.

Эти "проблемные" блоки по 64 кбайт каждый в индикаторе системных ресурсов называются USER Resources и GDI Resources, и именно об их объеме сигнализируют Windows и программы мониторинга системных ресурсов, когда, например, сообщают: "System Resources are getting low" или "Out of Memory". К сожалению, объем памяти, отводимый под эти ресурсы, никак не зависит от количества установленной в ПК оперативки, а потому в системах Windows 9x по определению нельзя запускать очень много программ одновременно — 16-битных ресурсов не хватит на все.Так что либо отключайте все "примочки" интерфейса (Active Desktop, веб-вид папок, звуковые эффекты, анимированные курсоры и иконки) и разгружайте память, освобождая ее от ненужных процессов (в особенности 16-битных), либо переходите на Windows XP — там такого нет. Кстати, проверьте, нет ли ограничений на объем swap-файла — фиксирование его размера или отключение тоже может привести к появлению похожих сообщений.

Никто не прокомментировал материал. Есть мысли?