Parte de mi trabajo actual es el cuidado y la alimentación de una gran aplicación java que fue diseñada para funcionar con una gran cantidad de memoria (actualmente 8 Gb), principalmente debido a los cálculos en curso con muchos datos en caché. Hice la implementación inicial con la configuración de GC estándar, sobre todo porque no había una forma sencilla de simular el entorno de producción que se ejecuta a máxima velocidad.
En etapas, en los próximos meses, he personalizado la configuración del GC. En general, la perilla más grande disponible parece estar ajustando la frecuencia y la magnitud de incrementos de gc; la mayor mejora ha sido el intercambio de grandes gc periódicos para los más pequeños y más frecuentes. Pero definitivamente hemos podido ver mejoras en el rendimiento.
No voy a publicar mis configuraciones específicas porque a) son específicas de nuestra configuración, yb) porque no las tengo a mano :). Pero, en general, lo que he encontrado es
- que ha habido una gran cantidad de trabajo realizado en afinar los ajustes por defecto de la cromatografía gaseosa. Casi siempre los valores predeterminados funcionan mejor que cualquier ajuste que realice.
- Al menos para mí, las situaciones en las que sintonía GC era realmente la pena eran lo suficientemente extrema que era descabellado intento de simular ellos, así que tuve que hacerlo experimentalmente y de manera progresiva.
Here's una buena referencia de un anterior. discusión de stackoverflow.
Tenga en cuenta que el indicador -server generalmente no es necesario si realmente se está implementando en un servidor. La JVM detectará qué tipo de entorno se está ejecutando en –
Esto no funciona en Windows. Aunque funciona en Linux y Solaris. La mayoría de los cuadros de Windows superan los requisitos del servidor estándar. Presumiblemente, la suposición es que se usarán para el uso del cliente. – Fortyrunner