que máquina maquina características art arquitectura android jit dalvik vm-implementation

android - maquina - máquina virtual dalvik y art



¿Cómo mejorarías Dalvik? La máquina virtual de Android (3)

  1. Mejor recolección de basura: compactación al mínimo (para eliminar los problemas de fragmentación de la memoria experimentados hoy), idealmente requiere menos CPU para realizar la recolección en sí misma (para reducir las quejas de "la velocidad de fotogramas de mi juego")
  2. JIT, como citan
  3. Suficiente documentación que, cuando se combina con un NDK, alguien suficientemente loco podría compilar el bytecode de Dalvik al código nativo para una opción de compilación AOT
  4. Hágalo separable del propio Android, de modo que otros proyectos puedan experimentar con él y las contribuciones de la comunidad puedan llegar en mayor cantidad y en un clip más rápido.

Estoy seguro de que podría aportar otras ideas si las necesita.

Actualmente estoy escribiendo un artículo sobre la plataforma Android. Después de algunas research , está claro que Dalvik tiene margen de mejora. Me preguntaba, ¿cuál crees que sería el mejor uso del tiempo de un desarrollador con este objetivo?

La compilación de JIT parece ser la más grande, pero también he oído que esto sería de uso limitado en una máquina de tan bajo recurso. ¿Alguien tiene un recurso o datos que respalden esto?

¿Hay otras opciones que deberían ser consideradas? Además de desarrollar un robusto kit de desarrollo nativo para evitar la máquina virtual.

Para aquellos que estén interesados, hay una conferencia que se ha grabado y puesto en línea con respecto a la máquina virtual de Dalvik .

Cualquier comentario es bienvenido, ya que esta pregunta parece subjetiva , aclararé que la respuesta que aceptaré debe tener alguna justificación para los cambios propuestos. Cualquier dato que lo respalde, como la mejora en la JVM de Sun cuando se introdujo, sería una ventaja masiva.


  1. JIT. Lo que no ayuda es un montón de basura. Es posible que sea más selectivo con respecto al código que JIT, pero tener una décima parte del rendimiento del código nativo siempre será limitado

  2. Decent GC. Los recolectores de basura generacionales modernos no tienen grandes tartamudos.

  3. Mejor análisis de código. Hay muchos casos en los que no es necesario realizar asignaciones / liberaciones, mantener los bloqueos, etc. Le permite escribir código limpio en lugar de hacer optimizaciones de que la máquina es mejor en

En teoría, la mayoría de los lenguajes de nivel superior (Java, Javascript, python, ...) deben estar dentro del 20% del rendimiento del código nativo en la mayoría de los casos. Pero requiere que el proveedor de la plataforma pase más de 100 años como desarrollador durante años. Sun Java se está poniendo bueno. También llevan 10 años trabajando en ello.


Uno de los principales problemas con Dalvik es el rendimiento, que es terrible que he escuchado, pero una de las cosas que más me gustaría es la adición de más idiomas.

La JVM ha tenido proyectos comunitarios para ejecutar Python y Ruby en la plataforma, e incluso se han desarrollado lenguajes especiales como Scala, Groovy y Closure. Sería bueno ver estos (y / u otros) también en la plataforma Dalvik. Sun también ha estado trabajando en la máquina Da Vinci, una extensión de escritura dinámica de la JVM, que indica un cambio importante en la filosofía de "una lengua para todos" que Sun ha seguido en los últimos 15 años.