Tiene una pregunta de asignación de memoria con la que me gustaría su ayuda. Hemos analizado algunos de nuestros servicios en la parte superior y observamos que tienen un valor de RES de aproximadamente 1,8 GB, que por lo que yo entiendo significa que están aferrados a 1,8 GB de memoria en ese momento. Lo cual estaría bien si los hubiéramos iniciado (básicamente, leen desde un caché, procesan y se trasladan a otro caché) pero dado que todavía vemos esto después de que el procesamiento intensivo de CPU se completa, nos preguntamos si significa que algo no está siendo sometido a GC como esperábamos.Tamaño de montón inesperadamente grande en comparación con% utilizado
corremos el programa con los siguientes parámetros: -Xms256m -Xmx3096m, que según entiendo significa un tamaño inicial del almacenamiento dinámico de 256 y un tamaño máximo de almacenamiento dinámico de 3096.
Ahora lo que haría esperar para ver es que el montón crece según sea necesario inicialmente, y luego se contrae según sea necesario a medida que la memoria se desasigna (aunque este podría ser mi primer error). Lo que vemos con jvisualvm es la siguiente:
- 3 minutos en: Montón utilizado es de 1 GB, montón tamaño es de 2 GB
- 5 minutos en: hemos hecho procesamiento, por lo montón usada cae dramáticamente a cerca de suficiente nada de nada, tamaño del montón sin embargo sólo gotas a alrededor de 1,5 GB
- 7 mins ->: pequeños trozos de tiempo real procesamiento periódicamente, montón utilizados solamente siempre entre 100-200MB o así, tamaño del montón sin embargo permanece constante a aproximadamente 1.7GB.
Mi pregunta sería, ¿por qué no se ha reducido mi montón como quizás esperaba? ¿No es esto robar otros procesos en la caja de linux de la memoria valiosa, y si es así cómo podría solucionarlo? Vemos errores de memoria en ocasiones, y con estos procesos asignados al tamaño de memoria más "inesperado", pensé que era mejor comenzar con ellos.
Cheers, Dave.
(~ disculpen posible falta de entendimiento sobre la optimización de la memoria JVM!)
Asigne un poco más de intercambio a la caja, tal vez. Como muchas de estas páginas no se utilizan, el núcleo las puede ubicar sin causar basura. Otros procesos deberían estar bien para la memoria residente. – wds