Diferencia entre revisiones de «Máquina virtual Java»

Contenido eliminado Contenido añadido
mSin resumen de edición
Humbefa (discusión · contribs.)
Línea 28:
La JVM «verifica» todo bytecode antes de ejecutarlo. Esto significa que solo una cantidad limitada de secuencias de bytecode forman programas válidos; por ejemplo, una instrucción JUMP (branch) puede apuntar solo a una instrucción dentro de la misma función. A causa de esto, el hecho de que JVM es una arquitectura de pila no implica una carga en la velocidad para emulación sobre arquitecturas basadas en registros cuando usamos un compilador JIT: no hay diferencia para un compilador JIT si nombra registros con nombres imaginarios o posiciones de pila imaginarias que necesitan ser ubicadas a los registros de la arquitectura objetivo. De hecho, la verificación de código hace a la JVM diferente de una arquitectura clásica de pila cuya emulación eficiente con un compilador JIT es más complicada y típicamente realizado por un intérprete más lento.
 
La verificación de código también asegura que los patrones de bits arbitrarios no pueden usarse como direcciones. La [[protección de memoria]] se consigue sin necesidad de una unidad de Gestión de Memoria ([[MMU]]). Así, JVM es una forma eficiente de obtener protección de memoria en chips que no tienen MMU.
 
=== Bytecodes ===