En la arquitectura de computadores, la arquitectura de 64 bits en el uso de los procesadores brinda una mayor cobertura en el uso de datos, el tamaño de enteros, y las direcciones de memoria (ocho octetos / bytes). Además, una CPU de 64 bits y arquitecturas ALU son aquellas que se basan en registros, buses de direcciones, o buses de datos de ese tamaño. Desde la perspectiva del software, la informática de 64 bits significa el uso de código con las direcciones de memoria virtual de 64 bits. Del mismo modo, en la arquitectura de 32 bits, la CPU o la programación de 32 bits utiliza 32 bits (cuatro octetos / bytes) para todo lo dicho anteriormente.
En la página de descarga de Java, en la lista de abajo podrás ver varios paquetes de instalación entre ellos paquetes de 32 bits o paquetes de 64 bits para varias plataformas, como Linux o Windows. Pero, ¿Te has preguntado que tipo de versión (32 o 64 bits) es la mejor para desarrollar aplicaciones en Java? En este articulo, voy a tratar de darte una pequeña dirección sobre las diferencias, algo que me había generado dudas sobre la diferencia entre Java de 32 y 64 bits..
2^32 = 4,294,967,296 es decir, más o menos 4.29 GB
Así que, en un sistema de 32 bits puede asignar teóricamente hasta 4 GB de memoria por proceso. Lo que rompe esto en Windows es cómo se maneja el espacio de direcciones del proceso. Windows acorta el espacio de direcciones de los procesos en el medio. Una media de la misma está reservada para el sistema operativo (el cual un proceso de usuario no puede utilizar) y la otra mitad para el usuario. No importa la cantidad de RAM, un proceso de 32 bits sólo puede utilizar 2 GB de RAM. Lo que es aún peor, este espacio de direcciones debe ser contiguo.
Los lectores y conocedores de tecnología podrían saber que los chips modernos soportan PAE, una tecnología de procesador que permite al sistema operativo usar un poco más de memoria, algo como 64 GB; pero también requiere soporte de aplicaciones especiales que la mayoría de las aplicaciones no tienen ni necesariamente necesitan.
Mientras que la arquitectura de 32 bits sólo puede acceder a 4 GB de RAM, un equipo de 64 bits puede acceder a 17,2 MILLONES GB de memoria del sistema, al menos teóricamente. Por lo tanto, debe eliminar todas las barreras de consumo de memoria del sistema.
Las ediciones de Windows Home de 64 bits aún están limitadas a 16 GB de RAM [todo por razones de licencia], pero las versiones Professional y Ultimate pueden utilizar hasta 192 GB de RAM en la actualidad debido a diversos problemas de compatibilidad.
El límite por proceso de RAM también se incrementa, en gran medida de 64 bits de Windows, en lugar de un límite de 2 GB, cada aplicación puede acceder hasta 8 TB de memoria virtual sin ninguna configuración especial (además de que debe estar presente en el sistema). Es un factor muy importante para la elección de su próxima máquina si tenemos en cuenta las aplicaciones como la edición de vídeo o máquinas virtuales pueden necesitar utilizar enormes cantidades de memoria RAM.
Así que ahora tenemos una buena comprensión de las máquinas de 32 bits frente a equipos de 64 bits. Vamos a centrarnos en las características que se relacionan sobre todo con java.
Ten en cuenta que la alta disponibilidad de memoria. Tiene un costo en tiempo de ejecución, por ejemplo,
1) Se requiere un 30-50% de más memoria en 64 bits en comparación con 32-bit. ¿Por qué? Principalmente debido a la distribución de la memoria en la arquitectura de 64 bits. En primer lugar, las cabeceras son 12 bytes en JVM de 64 bits. En segundo lugar, las referencias a objetos pueden ser o bien de 4 bytes u 8 bytes, dependiendo de banderas JVM y el tamaño de la pila. Esto definitivamente añade cierta sobrecarga en comparación con los 8 bytes en las cabeceras de 32 bits y 4 bytes en referencias.
2) La recolección de basura más larga pausa. La construcción significa que hay más trabajo por hacer por GC durante la limpieza de los objetos no usados. Lo que significa en la vida real es que tienes que ser muy prudentes en la construcción de pilas más grandes que 12 a 16GB.
Absolutamente si. El código de bytes en Java es independiente de los sistemas de 32 bits o 64 bits. Es por eso que se dice que el código Java compilado será ejecutable en «cualquier» sistema. Recuerda que sólo la máquina virtual está compilada para una arquitectura especial del sistema debido a algunos archivos nativos que tiene en paquete y archivos nativos que no son independientes de la plataforma.
Si es así, entonces las aplicaciones desarrolladas en Java de 32 bits se ejecutan en sistemas de 64 bits? La respuesta es que los sistemas de 64 bits incluyen una capa de compatibilidad llamada WoW64, que en realidad cambia la parte posterior del procesador y cambia entre los modos de 32 bits y 64 bits, dependiendo de que hilo tiene que ejecutar; haciendo correr software de 32 bits sin problemas, incluso en el entorno de 64 bits.
Del mismo modo, en la máquina de 32 bits, el límite es de 4 GB, y alrededor de sólo el 1,5 GB es realmente disponible para las aplicaciones de usuario por las razones anteriormente dichas dentro del articulo.
Existe un truco que puede jalar de Windows de 32 bits algo para reducir el espacio del núcleo y hacer crecer el espacio de usuario. Puedes utilizar el parámetro /3GB en el boot.ini. Sin embargo, para utilizar realmente este pequeño truco, la JVM debe ser compilado/enlazado con el modificador /LARGEADDRESSAWARE.
Esto, desafortunadamente, no es el caso, al menos con el Hotspot JVM. Hasta las últimas versiones de JDK la JVM no está compilada con esta opción. Si tienes suerte, y estás ejecutando un JRockit en las versiones posteriores a 2006. En este caso se puede disfrutar de hasta 2.8 a 2.9 GB de tamaño en la pila.
Como se puede entender, la diferencia radica en el uso de la RAM (algo que probablemente ya sabias), pero lo mas importante, es que aun con estas dos versiones, no se pierde el concepto de multi plataforma. Como experiencia propia, puedo decirte que existen aplicaciones o entornos de desarrollo como Apache Ant, que exigen una versión de 32 bits para poder compilar el código. Si tienes alguna experiencia, no dudes en compartirla 😉
¿Has notado aplicaciones desconocidas o un drenaje inesperado de la batería? Estos podrían ser indicios…
Saber cómo Restablecer un iPhone a su Estado de Fábrica es clave para solucionar problemas…
Motorola ha confirmado el lanzamiento de Moto G84 5G y Moto G54 5G en India,…
Recuerde WizardCoder, ¿el codificador de IA que cubrimos recientemente aquí en Windows Report? Nos jactamos…
Los investigadores han descubierto numerosos fallos de seguridad en el complemento WordPress Jupiter X Core…
Para solucionar problemas del sistema de PC con Windows, necesitará una herramienta dedicada Fortect es…
Ver comentarios
Muy Buen aporte, Gracias
Muchas gracias por la información... te dejo una consulta ¿Puede un archivo .class generado usando un compilador de Java de 64 bits usarse en Java de 32 bits?
Muchas gracias por la explicación =).
Excelente articulo.
Muy buen artículo tal vez con ejemplo práctico sería un poco mejor comprendido con tamaños de datos y el manejo de la pila.. Desconozco como se llena la pila y como hacer el programa para que sea de arquitectura 64 bits..