Pregunta

Tengo curiosidad por el significado exacto de " cometido " memoria es cuando el valor se consulta desde la clase MemoryUsage. Esa clase lo explica como "confirmado" representa la cantidad de memoria (en bytes) que se garantiza que estará disponible para ser utilizada por la máquina virtual Java. & Quot; Esto significa que la memoria está en uso por el proceso jvm y NO está disponible para otros procesos hasta que se libere por el proceso java, o significa que el proceso java será exitoso si intenta asignar hasta esa cantidad de memoria ? Me doy cuenta de que esto podría ser específico de la implementación, pero solo me interesa el hotspot.

¿Fue útil?

Solución

El tamaño confirmado es la memoria realmente asignada, el tamaño utilizado es el tamaño utilizado para almacenar datos reales (cuando se usa ~ = comprometido es el momento para GC mayor y posiblemente para aumentar el montón). El tamaño máximo es el límite duro en el que puede crecer el montón, si no es suficiente, la JVM lanza OutOfMemoryError.

Si se confirma una memoria, definitivamente se puede usar. Además, la única ocasión en que JVM no podría comprometer más memoria (en un sistema operativo moderno) es si el hardware está fuera de la memoria virtual.

Todos estos tamaños solo indican el tamaño de la región de almacenamiento dinámico. La JVM también tiene otras regiones de memoria (pilas de hilos, caché JIT, etc.) La región de almacenamiento dinámico suele ser la más grande, esto corresponde aproximadamente a la huella del proceso.

Dos notas:

  • si el tamaño confirmado no cabe en la memoria física, parte de ella se cambiará al archivo de página. Esto lleva a una gran desaceleración durante el GC y, en tales casos, mejorará el rendimiento de la aplicación al reducir el tamaño del montón.
  • algunos sistemas operativos permiten la doble reserva de memoria: puede asignar la cantidad que desee siempre y cuando no intente usarla (olvidó de qué sistema operativo era, alguien me debe informar)

Otros consejos

" ¿Esto significa que la memoria está en uso por el proceso jvm y NO está disponible para otros procesos " Sería la correcta. Por lo tanto, es menor (o igual a) la cantidad de memoria que el sistema operativo considera que toma el proceso de JVM.

http://java.sun.com /j2se/1.5.0/docs/guide/management/jconsole.html (lo siento, no hay anclas a las que enlazar).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top