Jupiter JVM es una máquina virtual Java de código abierto que se desarrolló como tesis de maestría con la modularidad y la extensibilidad en mente. Utiliza el recolector de basura Boehm y GNU Classpath . Los principales aspectos del diseño de la máquina virtual Jupiter se pueden simplificar de la siguiente manera:
- Localidad de la memoria : los objetos se asignan en el montón sin tener en cuenta la localidad. Si bien este enfoque puede ser adecuado para procesadores monoprocesadores o SMP de pequeña escala, es poco probable que funcione bien en un clúster de estaciones de trabajo donde el acceso a la memoria remota es uno o dos órdenes de magnitud más lento que el acceso a la memoria local.
- Recolección de basura paralela: la recolección de basura puede consumir una cantidad considerable de tiempo de aplicación. Normalmente, las JVM emplean recolectores de basura del tipo "detener el mundo", donde los subprocesos del programa se detienen durante la recolección de basura. Este enfoque no funcionará para una gran cantidad de procesadores, por dos razones. Primero, el costo de "detener el mundo" es considerablemente mayor cuando la cantidad de procesadores es grande. Segundo, usar un solo subproceso para recolectar basura da como resultado una fracción secuencial inaceptablemente grande para cualquier aplicación.
- Modelo de consistencia de memoria : para lograr un rendimiento escalable en muchos procesadores, es importante aprovechar el modelo de memoria de Java "relajado" . Actualmente, ninguna JVM implementa el JMM fielmente y, de hecho, muchas lo implementan incorrectamente, lo que genera falta de coherencia y pérdida de oportunidades de optimización. La especificación del JMM también se revisó en 2007.
- Subprocesos y sincronización eficientes : con muchos procesadores, es fundamental proporcionar soporte de subprocesos eficientes y mecanismos de sincronización que se escalen bien.
Véase también
Enlaces externos