Кешируются ли процессы в Windows 7?
Я профилирую свое Java-приложение с помощью Windows Performance Analyzer. Мое приложение представляет собой простой анализатор, который использует внешнюю программу командной строки для анализа файлов. Эта внешняя программа вызывается для каждого файла. Вот как это выглядит при выполнении в Windows 7:
Как видите, одновременно создаются два короткоживущих процесса: conhost.exe
а такжеsrc2srcml.exe
, Что странно, так это то, что впервые эти процессы живут намного дольше, чем позже. Что может быть причиной этого?
Возможно ли, что Windows каким-то образом кеширует эти процессы?
2 ответа
Windows 7 действительно кэширует все виды файлов, включая приложения, в памяти. Ваше предположение, вероятно, верно, тот факт, что процессы находятся в памяти, заставляет их запускаться намного быстрее. Мало того, что исполняемые файлы сами кешируются, но и необходимые им библиотеки DLL также загружаются и готовы.
conhost.exe
процесс хостинга консоли, запускаемый из командной строки (cmd) Это присутствует, потому что вы используете программу командной строки.
src2srcml.exe
является частью инструментария srcML и присутствует, вероятно, потому, что вы манипулируете исходной разметкой или файлами XML.
Что касается того, почему он медленнее при первом вызове, как уже было отмечено MoJo, то это потому, что первый вызов загружает нужные объекты в память. Пока Windows не требует ОЗУ, она оставит в ней все файловые блоки, которые были прочитаны или записаны.
Это включает в себя исполняемые файлы, файлы DLL, таблицы дисков, структуру каталогов, файлы пользовательских данных, реестр, необходимые модули ядра, короче говоря, все и все, что находится на диске, кэшируется Windows.
Размер кеша полностью динамический и может превышать половину оперативной памяти. Поскольку программам требуется память, Windows освободит прочитанные блоки. Он также будет периодически проверять необходимость записи измененных блоков, чтобы они могли стать кандидатами на освобождение (ленивая запись), поэтому не рекомендуется отключать шнур питания на компьютере с Windows.
Вот почему новые вызовы быстрее, потому что Windows адаптировалась к вашим потребностям, загружая в оперативную память все необходимые объекты.
Для получения дополнительной информации см. Кэширование файлов в блогах Microsoft или Концепции ввода / вывода.