Sí a la primera pregunta y no a la segunda pregunta; es una máquina virtual. Sus problemas probablemente están relacionados con cambios no especificados en la implementación de la biblioteca entre versiones. Aunque podría ser, por ejemplo, una condición de carrera.
Hay algunos aros que la VM debe atravesar. En particular, las referencias se tratan en archivos de clase como si ocuparan el mismo espacio que int
s en la pila. double
y long
ocupan dos ranuras de referencia. Para los campos de instancia, hay una reorganización de la máquina virtual por lo general pasa de todos modos. Todo esto se hace (relativamente) de manera transparente.
También algunas JVM de 64 bits utilizan "oops comprimidos". Debido a que los datos se alinean alrededor de cada 8 o 16 bytes, tres o cuatro bits de la dirección son inútiles (aunque un bit de "marca" puede ser robado para algunos algoritmos). Esto permite datos de direcciones de 32 bits (por lo tanto, utilizando la mitad del ancho de banda y, por lo tanto, más rápido) para usar tamaños de almacenamiento dinámico de 35 o 36 bits en una plataforma de 64 bits.
aclare los "problemas". –
Tengo un problema similar: implementar una aplicación de primavera en un servidor weblogic de 64 bits. Obtenemos varias excepciones de clase no encontradas, y otros errores inútiles. Además, se implementa y se ejecuta en algunas máquinas de 64 bits, pero no en otras. Sin embargo, no podemos decir qué es diferente. ¿Has resuelto esto? – nont
@nont: sea cual sea el problema, no es una compilación de 32vs64 bits. –