Tengo una aplicación a gran escala con dos tipos de objetos: vida larga (caché) y vida corta (solicitud-proceso-respuesta). Teóricamente, con este tipo de aplicación, creo que es posible configurar espacios Young vs Old, por lo que el consumo de espacio antiguo es constante, lo que resulta en que no hay GC completo.sintonización JVM y GC: teoría para no GC completo
He cambiado newSize-maxNewSize params, pero, Old heap sigue aumentando hasta completar GC. Después de cada GC completo, el consumo se reduce al 20% (la memoria caché toma el 20%). Por alguna razón, mis objetos entran en el espacio antiguo. Tengo dos sospechosos por qué se mueven al espacio antigua:
por este artículo: http://chaoticjava.com/posts/gc-tips-and-memory-leaks/ que ha informado si sufre grandes objetos asignados, los ir directamente al espacio antiguo. ¿Es esto cierto, y si lo es, hay un parámetro de opción de JVM que pueda establecer el umbral de tamaño de objeto para el espacio Joven?
Si entendí el proceso correctamente, los objetos se cambian entre las secciones de supervivencia de To-From antes de moverlas a la sección anterior. ¿Hay algún parámetro que pueda establecer cuántos conmutadores entre To y From deben realizarse antes de pasar al espacio antiguo?
¿Algún otro consejo?
Gracias, Amar
WhiteFang34 ¿Es necesario eliminar esta opciones: -Dsun.rmi.dgc. client.gcInterval = 3600000 y -Dsun.rmi.dgc.server.gcInterval = 3600000 desde mis parámetros de JVM si quiero probar los params. – Eldar
@ Yoldar-Zi puede mantener esas opciones de RMI. – WhiteFang34