¿Qué hace el indicador HotSpot JVM -XX:+UseCompressedOops
y cuándo debería usarlo? ¿Qué tipo de diferencias de rendimiento y uso de memoria veré cuando lo use en una instancia de Java de 64 bits (en lugar de no usarlo)?
¿Qué hace el indicador HotSpot JVM -XX:+UseCompressedOops
y cuándo debería usarlo? ¿Qué tipo de diferencias de rendimiento y uso de memoria veré cuando lo use en una instancia de Java de 64 bits (en lugar de no usarlo)?
Respuestas:
La mayoría de HotSpot JVM en el último año lo ha tenido activado de forma predeterminada. Esta opción permite que las referencias sean de 32 bits en una JVM de 64 bits y accedan a cerca de 32 GB de pila. (más de los punteros de 32 bits pueden) (También puede tener una memoria de montón casi ilimitada). Esto puede ahorrar una cantidad significativa de memoria y mejorar potencialmente el rendimiento.
Si desea utilizar esta opción, le sugiero que actualice a una versión que la tenga activada de forma predeterminada, ya que puede haber una buena razón, como errores, por la que no estaba habilitada anteriormente. Pruebe la actualización 23 de Java 6 o la actualización 5 de Java 7.
En resumen, no lo enciendas, usa una versión que lo tenga activado por defecto.
Actualizar:
En Java 8 tiene la opción de establecer el -XX:ObjectAlignmentInBytes=
y, de hecho, si tiene un tamaño de pila de 64 GB, utilizará -XX:ObjectAlignmentInBytes=16
y seguirá utilizando referencias de 32 bits.
JE cache
Esto se debe a que no puede determinar si está utilizando compresas o no por alguna razón. Puedo pensar en algunos métodos que pueden decirte esto por cierto. No debería necesitar especificarlo en la línea de comando en mi humilde opinión a menos que desee que la JVM falle si no está habilitada. por ejemplo, tiene un montón de 64 GB en Java 8.