Podría alguien decirme cuál es la pila de la capacidad es en C#.

Estoy tratando de formar una malla 3D objeto cerrado utilizando una matriz de 30.000 artículos.

  • Usted podría simplemente poner a prueba tu mismo poniendo miles de millones de elementos en él y ver cuando se bloquea?
  • Estrechamente relacionadas con la cuestión es el tamaño de la Pila bajo Mono.
InformationsquelleAutor | 2009-05-05

5 Comentarios

  1. 71

    El tamaño de pila predeterminado para un .NETO de aplicación es de 1 MB (el valor predeterminado es de 256 KB para 32 bits ASP.NET aplicaciones y 512 KB de 64 bits ASP.NET apps), pero usted puede cambiar eso. Para la aplicación se puede cambiar el tamaño predeterminado mediante la modificación de los PE de encabezado del archivo ejecutable. Para los subprocesos de crear, puede utilizar la sobrecarga del constructor que toma un tamaño de pila.

    Pero como Anton Tyjhyy señala en su respuesta, los arrays son tipos de referencia y por lo tanto situado en el montón (incluso si la matriz pasa a sostener un montón de tipos de valor).

    • Los 256 KB de tamaño para ASP.Net aplicaciones es para las aplicaciones de 32 bits. En la versión de 64 bits de Windows Server 2008 y versiones posteriores, el tamaño de la pila ha sido empujado hasta 512 KB. Ver KB 932909 para más detalles.
    • Gracias por la info. Voy a actualizar.
    • En realidad se puede asignar una matriz en la pila usando stackalloc. Además, sólo porque algo es un tipo de referencia, no necesariamente significa que será asignado en la pila o montón, varía según la aplicación de la CLR y en el .NETO de aplicación varía en algunos casos especiales (tamaño del tipo y alcance).
    • No soy consciente de ninguna de las implementaciones donde las instancias de los tipos de referencia no ir en el montón administrado. ¿Tiene usted un ejemplo de que?
    • Echa un vistazo a Eric Lippert del artículo La Pila Es Un Detalle de Implementación. Es un experimento de pensamiento. Y una buena lectura.
    • Gracias. Sé el artículo.

  2. 53

    Su matriz se vive en el montón, el tamaño de la pila es irrelevante en su caso.

    • No se si se declara con stackalloc…
  3. 6

    Si desea comprobar el valor de su corriente .NETO de la asamblea, a continuación, puede hacerlo mediante el uso de ILDASM de comandos que viene con comandos de Visual Studio. Una vez que haya comenzado la herramienta, abra el ensamblaje y, a continuación, vaya a View -> Headers menú. Ahora desplácese hacia abajo para PE Optional Header (32 bit) sección en el recién inaugurado Headers ventana. Verás dos campos:

    1. Tamaño de la pila de reserva – Esto es auto-explicativo. Este es el valor predeterminado de la pila de tamaño de la memoria asignada a cualquier hilo esta siendo creado en su programa/aplicación.
    2. Tamaño de la pila de cometer comprometidos espacio de pila es – (Citando a Hans Pasante de aquí)

    Dicho espacio está reservado en el sistema operativo del archivo de paginación
    la pila puede siempre ser intercambiado cuando sea necesario.

    Pila de capacidad en C#

  4. 5

    Para el uso de la pila para el almacenamiento de una matriz que tiene el uso de código inseguro con punteros y stackalloc a la que desee asignar el espacio de memoria en la pila.

Dejar respuesta

Please enter your comment!
Please enter your name here