4

Я профилирую свое Java-приложение с помощью Windows Performance Analyzer. Мое приложение представляет собой простой анализатор, который использует внешнюю программу командной строки для анализа файлов. Эта внешняя программа вызывается для каждого файла. Вот как это выглядит при исполнении в Windows 7:

результаты профилирования

Как видите, одновременно создаются два короткоживущих процесса: conhost.exe и src2srcml.exe . Что странно, так это то, что впервые эти процессы живут гораздо дольше, чем позже. Что может быть причиной этого?

Возможно ли, что Windows каким-то образом кеширует эти процессы?

2 ответа2

4

Windows 7 действительно кэширует все виды файлов, включая приложения, в памяти. Ваше предположение, вероятно, верно, тот факт, что процессы находятся в памяти, заставляет их запускаться намного быстрее. Кешируются не только сами исполняемые файлы, но и требуемые библиотеки DLL также загружаются и готовы.

1

conhost.exe - это процесс хостинга консоли, запускаемый из командной строки (cmd). Он присутствует, потому что вы используете программу командной строки.

src2srcml.exe является частью набора инструментов srcML и присутствует, вероятно, потому, что вы манипулируете исходной разметкой или файлами XML.

Что касается того, почему он медленнее при первом вызове, как уже было отмечено MoJo, то это потому, что первый вызов загружает нужные объекты в память. Пока Windows не требует ОЗУ, она оставит в ней все файловые блоки, которые были прочитаны или записаны.

Это включает в себя исполняемые файлы, файлы DLL, таблицы дисков, структуру каталогов, файлы пользовательских данных, реестр, необходимые модули ядра, короче говоря, все, что находится на диске, кэшируется Windows.

Размер кеша полностью динамический и может превышать половину оперативной памяти. Поскольку программам требуется память, Windows освобождает прочитанные блоки. Он также будет периодически проверять необходимость записи измененных блоков, чтобы они могли стать кандидатами на освобождение (ленивая запись), поэтому не рекомендуется отключать шнур питания на компьютере с Windows.

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

Для получения дополнительной информации см. Кэширование файлов в блогах Microsoft или Концепции ввода / вывода.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .