Когда я устанавливаю приложение .NET, я понимаю, что он будет запущен. Мой вопрос заключается в том, что этот jitting случается каждый раз, когда я запускаю это приложение или это происходит только в первый раз? Если это произойдет только в первый раз, где я могу найти jitted версию этого приложения?Выполняется ли jitting каждый раз при запуске приложения .NET?
ответ
В сборки JITted по частям, по мере необходимости. Ваш вопрос, кажется, подразумевает, что все приложение jit скомпилировано сразу. Это не то, что происходит. Части, которые были связаны в любой конкретный момент времени, находятся в памяти.
JIT-компиляция учитывает тот факт, что какой-либо код может никогда не вызываться во время выполнения. Вместо использования времени и памяти для конвертировать все MSIL в переносимый исполняемый файл (PE) в собственный код , он преобразует MSIL по мере необходимости во время выполнения и сохраняет полученный в результате нужный код в памяти, чтобы он был доступен для после вызывает в контексте этого процесса. Загрузчик создает и прикрепляет заглушку к каждому методу в типе, когда тип загружен и инициализирован. Когда метод вызывается в первый раз, stub передает управление компилятору JIT, который преобразует MSIL для этого метода в собственный код и изменяет заглушку на точку непосредственно на генерируемый код . Последующие вызовы JIT-скомпилированного метода поэтому переходят непосредственно к внутреннему коду.
Это не меняет ответ на ваш вопрос, но there are some differences in how the JIT compilation happens with .NET 4.5. На многоядерных процессорах потоку будет поручено компилировать методы до их фактического вызова.
- 1. singleton создаются каждый раз при каждом запуске
- 2. Приложение извлекает себя каждый раз при запуске
- 3. Push Notification показывает каждый раз при запуске приложения
- 4. Как очистить данные веб-просмотра каждый раз при запуске приложения?
- 5. Сделайте просмотр изображений каждый раз при запуске
- 6. Установленное приложение рушится каждый раз при запуске
- 7. Приращение значения каждый раз при запуске функции
- 8. Сбой приложений каждый раз при запуске
- 9. nodejs запускается каждый раз при запуске osx
- 10. Может ли MSTest запускать определенный метод каждый раз при запуске?
- 11. Является ли mscorlib.dll/mscoree.dll загруженным при запуске приложения .NET
- 12. обновляется каждый раз при выполнении приложения
- 13. Выполняет ли .NET CLR JIT каждый метод каждый раз?
- 14. Должен ли я создавать экземпляр объекта каждый запрос или один раз при запуске приложения?
- 15. Производит ли python vm метод каждый раз?
- 16. почему эта функция автоматически выполняется при запуске приложения
- 17. Visual Studio 2012 LNK1168 каждый раз при повторном запуске проекта
- 18. Почему код javascript не выполняется каждый раз?
- 19. onLocationChanged вызывается несколько раз при запуске приложения
- 20. Сбой при запуске приложения в .NET 3.5 на .NET 4
- 21. Ошибка при запуске приложения .NET из AutoSys
- 22. AngularJS директива не выполняется каждый раз
- 23. Включает ли Microsoft автоматическую проверку версий .NET при запуске приложения? `
- 24. Функция highchart formatter выполняется дважды каждый раз
- 25. Emulator посылает получить запрос на Google каждый раз при запуске
- 26. Как запустить приложение wpf каждый раз при запуске компьютера?
- 27. System.IO.FileLoadException При запуске веб-приложения
- 28. ASP.NET Как раз вовремя
- 29. Производит ли произведение двух констант каждый раз, когда он выполняется?
- 30. Нужно ли устанавливать каждый плагин GRUNT каждый раз при запуске нового проекта?
Получение его только один раз - это то, о чем должен заботиться ваш установщик. Очевидным запросом google является «installer run ngen». –