Las JVM recientes tienen muchos parámetros XX para la recolección de basura (ver here por ejemplo), pero ¿cuáles son las opciones que pueden hacer que una aplicación Swing del lado del cliente realmente tenga un mejor rendimiento?¿Cuáles son las mejores configuraciones de recolección de basura para el lado del cliente?
Debo señalar que una de las cosas que realmente me molesta en las aplicaciones java del lado del cliente es la gran demora en la recolección de basura mundial. En Intelli-J IDEA lo he visto durar tres minutos o más.
EDIT: Gracias por todas las respuestas. Solo para informar, coloqué el recolector de basura de CMS para IDEA (que es una buena referencia común del tipo de aplicación con la que todos los que están leyendo esta pregunta están familiarizados) utilizando la configuración sugerida por here. También configuro -XX: + StringCache para ver si reduce los requisitos de memoria.
En general, la observación es que el rendimiento de funcionamiento regular no se degrada hasta el punto en que se puede observar mirándolo. La reducción de memoria es enorme usando la opción Caché de cadena; sin embargo, el método CMS no es exhaustivo y termina requiriendo detener el ciclo mundial de recolección de basura (de vuelta a la espera de tres minutos) para borrar la memoria (400MB en una ejecución) .
Sin embargo, dado el espacio reducido de la memoria, es posible que pueda poner una cantidad máxima de memoria más pequeña que evitará que las colecciones del mundo tengan tamaños más pequeños.
IDEA 8.1.4 viene con JDK 1.6.0_12, por lo que no he probado G1 todavía. Además, mi máquina solo tiene 2 núcleos, por lo que un enfoque G1 no se maximizará realmente. Es hora de golpear al jefe para obtener una máquina mejor;).
Gracias por la respuesta, pero ¿qué buscarías en el perfil? ¿Eso es lo que los datos indicarían una dirección sobre otra? – Yishai
Bueno, generalmente, el rendimiento del GC, el tiempo de pausa máximo y promedio, la frecuencia del GC completo y su duración también (para encontrar el mejor compromiso). Pero es difícil responder eso por ti :) –