¿Por qué es tan alta la reserva de memoria virtual de Java? ¿Insecto?

6

En mi servidor Mac Os 10.5.8, Java está reservando 16,777,216TB (aproximadamente un tercio más que la suma de todo el conocimiento humano -eek!) de la memoria virtual. Sé que realmente no está reservando esto (¡sería bastante sorprendente si lo fuera!); es algo de qué preocuparse (es decir, un error / falla), y si no, ¿qué significa?

    
pregunta glenstorey 11.07.2011 - 06:10

1 respuesta

1

16 Mebi TebiBytes (16 ExbiBytes) es 2 ^ 64 bytes. Su máquina debe usar direcciones de 64 bits y su JVM (Java Virtual Machine) probablemente escribió algo para abordar 0xffffffffffffffff dentro de su propio espacio de direcciones virtuales (posiblemente escribiendo accidentalmente en la dirección que es una menos de 0x0000000000000000), lo que provocó que Mac OS X el subsistema de memoria virtual del kernel considera que el proceso utiliza todo el espacio de direcciones virtuales de ese proceso.

No te preocupes, la memoria virtual es escasa . Es decir, no asigna páginas de memoria (o espacio de intercambio en el disco) para cada dirección asignada, solo para las páginas de memoria en las que su proceso ha sido escrito . Pero supongo que eso ya es obvio a menos que tenga un RAID ExbiByte 16+ montado en / o en /var/vm/ donde se encuentran sus archivos de intercambio de memoria virtual. :-)

Ver un proceso hace que se asigne todo su espacio virtual de direcciones de 64 bits es una rareza, pero no debería causar ningún problema.

    
respondido por el Spiff 13.07.2011 - 11:42

Lea otras preguntas en las etiquetas