La historia corta es que no es realmente posible saber la cantidad exacta de memoria que está usando un proceso. Puede obtener una idea general, pero la cantidad específica es difícil de determinar. Esto es como preguntar “Cuánto espacio está usando una persona”.
La gestión de la memoria en informática es una tarea extremadamente complicada. Esto se debe a que hay una gran variedad de formas en que el sistema maneja, protege y optimiza el uso de la memoria.
Con respecto a lo que proporciona el administrador de tareas, Private Working Set se acerca, pero incluso eso no es exacto. Este es el subconjunto del espacio de direcciones virtuales del proceso que es “residente” o “presente” en los términos del formato de tabla de páginas de Intel, lo que significa que se puede acceder sin incurrir en un error de página.
- ¿Cuál es la mejor computadora para jugar?
- ¿Por qué puedo configurar la fecha en mi iPad a 1970?
- ¿Cuál es la confirmación mínima de una buena computadora portátil requerida para un artista?
- ¿Qué efecto tienen los rayos en las computadoras portátiles mientras están conectadas pero apagadas?
- Cómo arreglar una computadora que se congela cada pocos minutos
Desafortunadamente, esto es engañoso por una variedad de razones, principalmente porque incluye algo de RAM que se comparte con otros procesos, principalmente aquellos que usan parte del mismo código, como el código de las bibliotecas comunes, y estas páginas compartidas se cuentan en el ” conjunto de trabajo “de todos los procesos en los que residen.
Si suma todos los tamaños de “conjunto de trabajo”, obtendrá un número mayor que la cantidad real utilizada. Si se cierra otra aplicación, esa memoria no se libera porque la está utilizando, entonces, ¿su “consumo” de memoria aumenta repentinamente?
Además, es probable que parte de la RAM que se perdió recientemente del proceso de trabajo debido al reemplazo de la página todavía esté en la lista de páginas en espera del sistema y, de ser así, el acceso generará un error de página, pero no un error de página difícil. Debido a la seguridad y la protección entre procesos, la memoria que necesita un proceso aún puede estar accesible desde el espacio de memoria de otro proceso (falla de página, rápida de resolver), pero no se cuenta en el conjunto de trabajo.
También hay varias formas de compartir memoria que solo pueden causar un impacto en la escritura. Si solicita una región asignada a la memoria de un archivo, por ejemplo, y esa región ya ha sido asignada por otro proceso, esa memoria será referenciada a usted como de solo lectura. Si decide escribir, se incurre en un impacto en el rendimiento, ya que básicamente copia la memoria a otra página para que permita la escritura.
Todo esto tampoco incluye ningún tipo de memoria respaldada a través de mapeo de archivos o mapeo disperso.
Por ejemplo, suponga que un proceso crea una asignación de memoria privada grabable de un archivo de 2GB. El sistema operativo debe reservar 2 GB de memoria virtual respaldada para el proceso, ya que podría escribir en cada byte de esa asignación. Además, es posible que nunca les escriba a ninguno de ellos. La memoria física solo se usa en escritura, pero la cantidad total de memoria debe reservarse en la parte posterior. ¿Cómo contamos esto?
Ni siquiera hemos hablado sobre el intercambio, y la gran cantidad de formas en que el sistema maneja el almacenamiento en caché.