Resumen
Estos son los valores para Dalvik VM runtime:
- Rápido: optimizado para la plataforma actual y puede consistir en rutinas de ensamblaje optimizadas manualmente (predeterminado)
- Portable: escrito en C y se espera que se ejecute en una amplia gama de plataformas
- jit: compilación justo a tiempo
En cuanto al orden, el código fuente base solo reconoce int:
.
Según dalvik/docs/embedded-vm-control.html,
Modo de Ejecución
La implementación actual de Dalvik VM incluye tres núcleos de intérprete distintos. Estos se conocen como "rápido", "portable" y "debug". El intérprete "rápido" está optimizado para la plataforma actual y puede consistir en rutinas de ensamblaje optimizadas manualmente. En contraste, el intérprete "portable" está escrito en C y se espera que se ejecute en una amplia gama de plataformas. El intérprete "debug" es una variante de "portable" que incluye soporte para perfilado y paso a paso.
La VM también puede admitir la compilación justo a tiempo. Si bien no es estrictamente un intérprete diferente, el compilador JIT se puede habilitar o deshabilitar con el mismo indicador. (Ver la salida de dalvikvm -help
para ver si la compilación JIT está habilitada en su VM.)
La VM le permite elegir entre "rápido", "portable" y "jit" con una forma extendida del argumento -Xint
. El valor de este argumento se puede establecer a través de la propiedad del sistema dalvik.vm.execution-mode
.
Para seleccionar el intérprete "portable", usaría:
adb shell setprop dalvik.vm.execution-mode int:portable
Si la propiedad no está especificada, se seleccionará automáticamente el intérprete más apropiado. En algún momento, este mecanismo puede permitir la selección de otros modos, como la compilación JIT. No todas las plataformas tienen una implementación optimizada. En tales casos, el intérprete "rápido" se genera como una serie de restos de C, y el resultado será más lento que la versión "portable". (Cuando tengamos versiones optimizadas para todas las arquitecturas populares, la convención de nombres será más precisa.)
Si el perfilado está habilitado o se conecta un depurador, la VM cambia al intérprete "debug". Cuando finaliza el perfilado o se desconecta el depurador, se reanuda el intérprete original. (El intérprete "debug" es sustancialmente más lento, algo a tener en cuenta al evaluar los datos de perfilado.)
El compilador JIT se puede deshabilitar por aplicación agregando android:vmSafeMode="true"
en la etiqueta de la aplicación en AndroidManifest.xml
. Esto puede ser útil si sospecha que la compilación JIT está causando que su aplicación se comporte incorrectamente.
También, según dalvik/docs/porting-guide.html,
Intérprete
El tiempo de ejecución de Dalvik incluye dos intérpretes, etiquetados como "portable" y "rápido". El intérprete portable está en su mayoría contenido dentro de una sola función C, y debería compilarse en cualquier sistema que admita gcc. (Si no tiene gcc, es posible que deba deshabilitar el modelo de ejecución "threaded", que depende de la implementación de la "tabla de saltos" de gcc; busque la definición de THREADED_INTERP.)
El intérprete rápido utiliza fragmentos de ensamblaje codificados a mano. Si no hay ninguno disponible para la arquitectura actual, el sistema de compilación creará un intérprete a partir de "restos" de C. El intérprete resultante de "todos los restos" es bastante más lento que el intérprete portable, haciendo de "rápido" algo un tanto inapropiado.
El intérprete rápido está habilitado de forma predeterminada. En plataformas sin soporte nativo, es posible que desee cambiar al intérprete portable. Esto se puede controlar con la propiedad del sistema dalvik.vm.execution-mode
. Por ejemplo, si usted:
adb shell "echo dalvik.vm.execution-mode = int:portable >> /data/local.prop"
y reinicie, el marco de la aplicación de Android iniciará la VM con el intérprete portable habilitado.
Lectura adicional: