¿Es posible modificar dinámicamente el valor de la memoria jvm externamente?
1.1 Bloqueo imparcial-XX:-UseBiasedLocking
El bloqueo imparcial habilitado de forma predeterminada a partir de JDK 1.6 intentará asignar el bloqueo al primer hilo para acceder a él y cancelarlo. Primitivas de sincronización en bloques de sincronización. Si solo un hilo accede a él a la vez, las operaciones de sincronización se omitirán correctamente, lo que mejorará el rendimiento.
Sin embargo, una vez que el segundo subproceso accede al bloqueo, la JVM debe revocar el bloqueo de polarización para volver al estado del subproceso desbloqueado. Para obtener más información, consulte "Detener el mundo" y "Punto seguro" del. JVM y "Underworld", puedes ver bastantes registros de RevokeBiasd, que, al igual que GC, harán que "Stop the World" funcione, ¡aunque por muy, muy poco tiempo! Pero para las aplicaciones concurrentes de subprocesos múltiples, cancelarlo traerá mejoras de rendimiento y reducirá ligeramente la latencia, por lo que Cassandra lo canceló.
1.2 -XX:AutoBoxCacheMax=20000
Integer i = 3; esta declaración tiene un proceso para bajar automáticamente int a Integer. De forma predeterminada, JDK solo almacena en caché -128 ~ +127. int y long, se debe construir inmediatamente un nuevo objeto Integer para números fuera del rango. Configurarlo en 20 000 aumentó el QPS de nuestra aplicación de 48 000 a 50 000, una mejora total del 4 %. Consulte las ideas sobre == y la comparación de signos iguales de valores enteros de Java (-128 ~ 127)