0 votos

Memoria inactiva vs swapping

Estoy tratando de procesar un gran conjunto de datos en java, y por eso puse mi -Xmx11G.

1 cosa que he observado es que, cuando uso xmx y el Jvm se inicia, la cantidad de memoria inactiva salta por encima de eso. Más tarde, veo que mi archivo de intercambio salta, pero mi memoria inactiva todavía tiene alrededor de 7gb izquierda. ¿Por qué el sistema operativo no utiliza la memoria inactiva, sino que la pasa al disco?

1voto

yoliho Puntos 340

La respuesta general es que el patrón de uso de memoria de Java difiere de otras aplicaciones, ya que utiliza la recolección de basura en una memoria de tamaño fijo, obteniendo así toda la memoria que podría utilizar por adelantado en lugar de obtenerla cuando se necesita..

El inicio es la JVM asignando la memoria, entonces creo que su recolección de basura tiende a acceder a la memoria con frecuencia o bien ha asignado el gran conjunto de datos de Java y sólo acceder a parte de ella. Por lo tanto, se accede a los 11G de memoria pero no con la suficiente frecuencia como para marcarlos como activos. Un programa basado en C no tendrá un hilo de fondo mirando todas las páginas de la memoria por lo que las páginas pueden estar inactivas el tiempo suficiente para ser intercambiadas.

Por experiencia, aunque en otros sistemas operativos, Java se ralentiza mucho si se intercambia parte de su memoria y se ajusta el tamaño de su VM para que no lo haga. Si necesita más memoria, entonces consiga más RAM o altere el algoritmo para usar menos.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X