c# - La cantidad máxima de memoria que cualquier proceso individual en Windows puede abordar
memory (2)
Límites de memoria para versiones de Windows responde cuál es la cantidad máxima de memoria que cualquier proceso en Windows puede abordar:
En versiones de Windows de 32 bits, un solo proceso puede asignar y direccionar no más de 3 GB de memoria virtual a la vez. En versiones de 64 bits de Windows, un proceso de 32 bits puede asignar y gestionar no más de 4 GB de memoria virtual a la vez.
Para los procesos de 64 bits, la cantidad es difícil de calcular, ya que existen numerosos límites superpuestos que podrían aplicarse dependiendo de todo tipo de factores. Por lo general, es alrededor de 7TB.
Mi pregunta: ¿cómo verificar los valores tales como "3GB", "4GB", etc.?
¿Podemos escribir un código de C # para probarlo? ¿Hay un método para eso?
Gracias.
Mark Russinovich publicó una serie multiparte sobre recursos de memoria de Windows realmente cubre esto muy bien. Puede encontrarlo aquí: http://blogs.technet.com/b/markrussinovich/archive/2008/07/21/3092070.aspx
Él cubre las razones por las cuales los límites son lo que son, así como las pruebas. El código para las pruebas está flotando en algún lugar en los tubos.
Si desea saber sobre los recursos de memoria y los problemas que puede ver al filtrar los distintos tipos, es una buena lectura.
Pero, en pocas palabras, 32 bits en sistema operativo de 32 bits: 2 GB, a menos que esté configurado para un gran espacio de direcciones, en cuyo caso 3 GB. Sistema operativo de 32 bits en 64 bits: 2 GB, a menos que esté configurado para un gran espacio de direcciones, en cuyo caso 4 GB.
Proceso de 64 bits: 2 GB, a menos que esté configurado para un gran espacio de direcciones, en cuyo caso podría tratar hasta 8 TB, a menos que esté alojado en un sistema basado en Intel Itanium que está limitado a 7 TB.
Microsoft establece los diversos límites (por sabores y tipos) en: http://msdn.microsoft.com/en-us/library/aa366778.aspx
Podrías escribir algún tipo de bucle en una aplicación de consola para probar esto.
Tal vez cree una cadena que sea exactamente 1MB y realice un ciclo a través de un proceso de concatenación para aumentar su tamaño hasta que obtenga un ... Error de desbordamiento de pila.
En cada iteración, WriteLine el tamaño, o el número de iteraciones.
EDITAR
Yo agregaría, ya que STRING es inmutable (a pesar de ser técnicamente un tipo de referencia) para usar OBJECT
Editar dos
Trisped señala que una cuerda encerrada en un Objeto sigue siendo inmutable.
Crear una matriz de bytes [1024] debería ser el truco.