2010-08-10 13 views

Respuesta

7

La arquitectura jvm se basa en la pila mientras que la arquitectura dvm se basa en registros. Las máquinas basadas en pila requieren más instrucciones (es decir, un conjunto de instrucciones más grande) que las máquinas basadas en registros para la misma tarea. Por otro lado, cada instrucción en las máquinas basadas en registro es más grande.

24

Conceptualmente, hay poca diferencia con respecto a un nivel de aplicación entre un DVM y una JVM. Arquitectónicamente, existe una diferencia importante de entre el DVM registrado y la JVM basada en pila.

Ambos utilizan un modelo de código de VM. Sin embargo, el DVM utiliza códigos de registro que son comparables con las instrucciones de código de bytes basadas en registro que la mayoría de las plataformas de destino ya ejecutan. Este incluye arquitecturas como las disponibles de ARM y MIPS y las arquitecturas compatibles con x86 de Intel, AMD y VIA Technologies.

Google desarrolló Android y eligió DVM por varias razones. Primero, hubo problemas de licencia de con la mayoría de las JVM. A continuación, el DVM debería ser más eficiente en los términos de uso de la memoria y el rendimiento en una máquina basada en registros. DVM es también se supone que es más eficiente cuando se ejecutan varias instancias del DVM . Las aplicaciones tienen su propia instancia de . Por lo tanto, múltiples aplicaciones activas requieren múltiples instancias de DVM . Como la mayoría de las implementaciones de Java , el DVM tiene un recolector de basura automático .

More about it

66

DVM se basa el registro que está diseñado para funcionar con poca memoria, utiliza su propio código de bytes y se ejecuta el archivo .dex

JVM es Pila basado que utiliza el código de bytes de Java y se ejecuta. archivo de clase que tiene JIT.

El código fuente de Java es compilado por el compilador de Java en archivos .class. Luego, la herramienta dx (dexer), que forma parte de Android SDK, procesa los archivos .class en un formato de archivo llamado DEX que contiene bytecode de Dalvik. La herramienta dx elimina toda la información redundante que está presente en las clases. En DEX, todas las clases de la aplicación se empaquetan en un solo archivo. DVM ha sido diseñado para que un dispositivo pueda ejecutar múltiples instancias de la máquina virtual de manera eficiente.

Las máquinas basadas en pila deben usar instrucciones para cargar datos en la pila y manipular esos datos, y así requerir más instrucciones que registrar máquinas para implementar el mismo código de alto nivel, pero las instrucciones en una máquina registradora deben codificar el registros de origen y destino y, por lo tanto, tienden a ser más grandes.

+1

¿No tenemos un número limitado de registros disponibles? – roottraveller

0

Jvm funcionará en base al código de bytes y el dvm funcionará en base a un bytecode optimizado, está optimizado para plataformas móviles porque los dispositivos móviles tienen poca memoria y bajo proceso, por eso usa el kernel de Linux.

4

Cuando una máquina virtual Java se inicia la ejecución de un programa, se necesita memoria para almacenar muchas cosas, incluyendo los códigos de bytes y otra información que extrae de archivos de clases cargadas, los objetos del programa instancia, los parámetros a métodos, valores de retorno, locales variables y resultados intermedios de cálculos.

La máquina virtual Java organiza la memoria que necesita para ejecutar un programa en varias áreas de datos de tiempo de ejecución.

En general, se apilan-basados ​​máquinas deben utilizar instrucciones para cargar los datos en la pila y manipular esos datos y, por lo tanto, requieren más instrucciones que máquinas registradoras para implementar el mismo código de alto nivel, pero las instrucciones en una la máquina de registro debe codificar los registros de origen y de destino y, por lo tanto, tiende a ser más grande.

Esta diferencia es primordialmente importante para los intérpretes de máquinas virtuales para quienes el despacho de código de operación tiende a ser costoso y otros factores son relevantes para la compilación de JIT.

siendo optimizada para bajos requerimientos de memoria, Dalvik tiene algunas características específicas que lo diferencian de otro estándar VM >>>>>

El VM estaba adelgazado para utilizar menos espacio --- >> Dalvik actualmente no tiene compilador just-in-time (JIT), pero Android 2.0 incluye fuente experimental para uno (deshabilitado por defecto). El grupo de constantes se ha modificado para usar solo índices de 32 bits para simplificar el intérprete. Utiliza su propio bytecode, no bytecode de Java * * *

+0

De Android 2.2 se usa JIT, de Android 5.0 (que reemplazó a DVM con ART) Se usa AOT, luego de Android 7.0 se usan tanto AOT como JIT. –

Cuestiones relacionadas