Desde que cambié a JRE 6, el uso de caché de código de mi servidor (sin almacenamiento dinámico) sigue creciendo indefinidamente. Mi aplicación crea muchas clases en tiempo de ejecución, PERO estas clases se descargan con éxito durante el proceso de GC. Veo que estas clases se descargan en los registros de gc y también el uso de permGen se mantiene constante. Específicamente me aseguro en mi código de que estas clases sean huérfanas una vez que haya terminado con ellas y que reciban correctamente la basura recolectada de permGen.¿Qué causa una fuga de caché de código JRE 6 JVM?
Sin embargo, el caché de código sigue creciendo. Solo me di cuenta de la caché del código después de cambiar a JRE 6. Así que supongo que mis preguntas son:
- ¿Incluye GC el caché del código?
- Lo que podría causar una fuga de memoria de caché de código, específicamente.
- ¿Hay algún error en JDK 6 en esta área?
¿Ha intentado limitar el tamaño máximo con el -XX: ReservedCodeCacheSize bandera de tiempo de ejecución? – serg10
Hola. sí lo tengo, solo pospone lo inevitable. Supongo que estoy tratando de entender para qué se usa el caché de código y cómo en su código puede causar una pérdida de memoria en esta área específica de la arquitectura de memoria JVM. Todos los otros segmentos de memoria JVM obtienen basura recolectada y son estables. Es solo el caché de código que está aumentando indefinidamente y no sé por qué. Gracias. –
¿Está utilizando un servidor de aplicaciones para ejecutar su código o ejecutarlo directamente? – GaZ