Подтвердить что ты не робот

В чем разница между DVM и JVM?

В чем разница между виртуальной машиной Java и виртуальной машиной Dalvik?

4b9b3361

Ответ 1

DVM основан на реестре, который предназначен для работы в малой памяти, использует свой собственный байтовый код и запускает .Dex файл

JVM основан на стеках, который использует java-байтовый код и запускает файл .class с JIT.

Исходный код Java скомпилирован компилятором Java в файлы .class. Затем инструмент dx (dexer), входящий в состав Android SDK, обрабатывает файлы .class в формате DEX, который содержит байт-код Dalvik. Инструмент dx устраняет всю избыточную информацию, присутствующую в классах. В DEX все классы приложения упаковываются в один файл. DVM был разработан таким образом, что устройство может эффективно запускать несколько экземпляров виртуальной машины.

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

Ответ 2

Концептуально мало отличие от уровня приложения между DVM и JVM. Архитектурно, есть главный разница между регистром DVM и JVM на основе стека.

Оба используют модель кода VM. Однако DVM использует регистровые коды операций, которые сопоставимы с основанной на регистре байт-кода, что большая часть целевые платформы уже выполняются. Эта включает такие архитектуры, как те доступный от ARM и MIPS и x86-совместимые архитектуры от Intel, AMD и VIA Technologies.

Google разработал Android и выбрал DVM по нескольким причинам. Во-первых, вопросы лицензирования с большинством JVM. Следующий, DVM должен быть более эффективным в условия использования и производительности памяти на машине на основе регистров. DVM - это также должны быть более эффективными при запуске нескольких экземпляров DVM. Заявки предоставляются на пример. Следовательно, несколько активных приложения требуют множественного DVM экземпляров. Как и большинство Java реализации, DVM имеет автоматический сборщик мусора.

Подробнее об этом

Ответ 3

Архитектура jvm основана на стеках, тогда как архитектура dvm основана на реестре. Стационарные машины требуют больше инструкций (т.е. Большего набора команд), чем машины на основе регистров для одной и той же задачи. С другой стороны, каждая инструкция в машинах с регистрами больше.

Ответ 4

Когда виртуальная машина Java запускает программу, ей требуется память для хранения  многие вещи, включая байт-коды и другую информацию, которую он извлекает  из загруженных файлов классов, объектов, создаваемых программой, параметров для  методы, возвращаемые значения, локальные переменные и промежуточные результаты вычислений.

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

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

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

Будучи оптимизированным для низких требований к памяти, Dalvik имеет некоторые специфические характеристики которые отличает его от других стандартных виртуальных машин → → >

VM просто уменьшилась, чтобы использовать меньше места --- → В настоящее время у Dalvik нет компилятора "точно в срок" (JIT), но Android 2.0 включает экспериментальный источник для одного (по умолчанию отключен). Постоянный пул был изменен, чтобы использовать только 32-разрядные индексы для упрощения  переводчика. Он использует собственный байт-код, а не байт-код *** ***

Ответ 5

Jvm будет работать на основе байтового кода, а dvm будет работать на основе оптимизированного байт-кода, который оптимизирован для мобильных платформ, потому что мобильные устройства имеют низкую память и низкий процесс, поэтому использует ядро ​​linux.

Ответ 6

DVM отличается от JVM несколькими способами. Во-первых, это машина на основе регистров, в отличие от стековой JVM. И вместо нескольких файлов классов, связанных в JAR файл, DVM использует один исполняемый файл Dalvik (DEX) с другой структурой и кодами операций.