Buscar
Social
Ofertas laborales ES
« Lenguajes y metodología (opinión publicada en Solo Programadores) | Main | Menos Java, más VM »
lunes
abr072008

Gestión de memoria en Java vs CPython y CRuby

En TSS se plantean una pregunta bastante interesante. Desde la plataforma Java se está haciendo un trabajo muy importante para conseguir que código fuente Python o Ruby ejecutarse en la máquina virtual Java, y el soporte a nivel de lenguaje actualmente es ya muy bueno. Sin embargo, el modelo de gestión de memoria que tienen Python y Ruby difiere considerablemente del que tiene Java. En el primer caso, se basa en malloc y free; en el segundo está bastante poco documentado y no está muy claro.

 

En cualquiera de los dos casos, un moderno recogedor de basura de cualquier máquina virtual Java realiza muchas más optimizaciones, siendo una potencial ventaja de saltar de la implementación en C a la implementación en Java. Sin embargo, el contar con diferentes modelos de memoria podría causar que programas escritos en Python o Ruby no funcionen correctamente en la máquina virtual Java, o bien porque los desarrolladores del porte han fallado al crear alguna de las abstracciones que permiten la ejecución de esos códigos en la máquina virtual, o incluso porque los códigos originales para funcionar correctamente dependían de funcionalidad no documentada de la implementación en C.

 

Garantizar la corrección de un modelo de memoria es algo absolutamente no trivial. Recordemos que el modelo de memoria de Java básicamente estuvo "roto" hasta Java 5.

La pregunta que se plantean en TSS es ¿habéis visto problemas al ejecutar códigos Python o Ruby en la máquina virtual Java por causa de las diferencias en el modelo de memoria?

Reader Comments

There are no comments for this journal entry. To create a new comment, use the form below.
Comentarios deshabilitados
Comentarios deshabilitados en esta noticia.