Консультация № 62685
15.11.2006, 05:33
0.00 руб.
0 6 2
Доброго времени суток.
Есть проблема: постоянно выпадает служба .NET Runtime Optimization Service. Стоит запуск вручную, смена на авто ничего не дает (снова перекидывается на вручную) Вручную запускаю - через минуту опять выпадает. Никаких сведений об ошибке не выдает. Как бы это безобразие исправить?

Обсуждение

давно
Бакалавр
7287
292
15.11.2006, 06:52
общий
это ответ
Здравствуйте, Другов-Кручинский Владимир Валерьевич!
Вопрос такой, а зачем она вам запущенная?
.NET Runtime Optimization Service
Microsoft .NET Framework NGEN
Судя по названию, она запускатся другой службой или приложение только тогда, когда это действительно необходимо.
давно
Бакалавр
7287
292
15.11.2006, 08:02
общий
Хотелось бы знать что же это за программа?Очень хотелось бы узнать, так же совсем не против узнать что насамом деле выполняет данная служба.Нет серьезно - знаете скажите, а то совсем дураком я буду.
Неизвестный
15.11.2006, 08:52
общий
Это в торговой сети. Запускается на севере прайс-чекеров. До конца сам не разобрался зачем именно она им нужна, но без нее не работает. Описание прайс-сервера, к сожалению, так далеко не заходит. Но если исходить из описания самой службы, то похоже для фоновой обраотки пакетов.
давно
Бакалавр
7287
292
15.11.2006, 09:11
общий
Вот нашелhttp://rusfaq.ru/?Step=info&Action=Question&ID=46248Отвечает: LastSoulЗдравствуйте, Nikolay Obukhov!NET.Runtime Optimization Service - Служба предназначена для самонастройки и самооптимизации .NET Framework. Повышает производительность приложений .NET. Отключать не советую.странно не правда ли?
Неизвестный
15.11.2006, 16:28
общий
это ответ
Здравствуйте, Другов-Кручинский Владимир Валерьевич!

.NET Runtime Optimization Service (процесс "mscorsvw.exe") предназначен для осуществления pre-JIT компиляции сборок .NET в фоновом режиме.

<b>Что это означает:</b>

Непосредственно во время запуска приложения .NET сборка .NET преобразуется JIT (just-in-time) компилятором в исполняемый код для конкретного компьютера(т.н. native code). Этот код временный, он создается и хранится в адресном пространстве процесса, которое очищается(условно) при завершении процесса. Поэтому при следующем запуске процесса все повторится сначала.

Для борьбы с данной "проблемой" используется пре-компиляция (pre-JIT), т.е. создание native кода не во время запуска процесса, а заблаговременно. При pre-JIT компиляции сборки .NET компилируются в "обычные" Win32 PE файлы-образы(т.н. "ngen images") и помещаются в Кеш Сборок (Assembly Cache).

Недостатком таких скомпилированных образов является то, что при изменении runtime или других библиотек на которые они ссылаются эти образы становятся нерабочими.

В связи с этим в .NET Framework 2.0 была реализована служба .NET Runtime Optimization Service (или NGEN Service) которая следит за зависимостями сборок и автоматически осуществляет pre-JIT компиляцию при необходимости.

<b>Как служба работает:</b>
Существует два способа запуска службы:

1. Сообщить службе, что были произведены изменения, которые могут потребовать рекомпиляцию (ngen.exe update). При этом служба запускается, определяет - что должно быть скомпилировано и помещает эти задачи в очередь.

2. Добавить в очередь новую задачу (ngen.exe install /queue).

Задачи в очереди компиляции могут иметь различные уровни приоритета. Задачи с высоким приоритетом выполняются немедленно. Задачи с низким приоритетом выполняются при простое компьютера.

Если хотите выполнить всю очередь сразу, чтобы процесс не занимал память, нужно выполнить команду:
ngen.exe executequeueditems

<b>Когда в очереди не остается задач служба автоматически устанавливает тип запуска "Manual" и останавливается до следующего пробуждения (см. выше).</b>
Неизвестный
16.11.2006, 15:11
общий
2 Другов-Кручинский Владимир Валерьевич:> теперь хоть понятно куда копатьА зачем что-то копать?Судя по вашим описаниям - у вас служба вполне штатно работает и дополнительно ничего делать не надо.
Форма ответа