Capacitación en Java de Beida Jade Bird: ¿Cuál es la diferencia entre montón y pila?
Pila: el espacio de memoria asignado durante el proceso de compilación es asignado y liberado automáticamente por el sistema operativo (compilador), y el espacio en la pila es limitado.
Durante el proceso de compilación, el programa asigna memoria para variables y funciones en la pila, y realiza el paso de argumentos para llamadas a funciones en tiempo de ejecución en la pila.
Montón: un espacio de memoria que se asigna dinámicamente durante la ejecución del programa. Puede determinar el tamaño de la memoria del montón que se asignará en función de cómo se ejecuta el programa.
Las distribuciones suelen ser asignadas por los programadores.
La asignación de funciones de memoria, como new y malloc, se asigna al montón.
La pila es una estructura de datos proporcionada por el sistema de la máquina y el montón lo proporciona la biblioteca de funciones C/c++.
La pila es una función proporcionada por el sistema, que se caracteriza por ser rápida y eficiente, pero tiene desventajas limitadas y datos inflexibles. La pila es una función de la biblioteca de funciones, que tiene las características de flexibilidad y flexibilidad; Conveniencia y los datos se utilizan ampliamente, pero la eficiencia se puede reducir.
La pila es una estructura de datos del sistema, que es exclusiva del proceso/hilo.
El montón es la estructura de datos interna de la biblioteca de funciones y no es necesariamente única.
La memoria asignada por diferentes montones no puede funcionar entre sí.
Existen dos tipos de espacio de pila: distribución estática y asignación dinámica.
La asignación estática la realiza el compilador, como la distribución automática de variables (automática).
La asignación dinámica se completa con la función alloca.
La asignación dinámica de la pila no requiere liberación (automática) y no hay función de liberación.
Para programas portátiles, no se recomienda la asignación dinámica de pila.
La asignación de espacio de almacenamiento dinámico es dinámica y, aunque al final del programa todo el espacio de datos se liberará al sistema, la coincidencia precisa entre la memoria de la aplicación y la memoria libre es un elemento esencial de una buena aplicación.
La memoria del montón se utiliza para contener objetos y matrices creados en el montón a partir de la memoria recién asignada y es administrada por el recolector de basura automático de la máquina virtual.
Cuando se crea una matriz u objeto en el montón, la pila también puede ser una variable especial, de modo que el valor de la variable en la pila sea igual a la dirección de memoria del montón de la matriz u objeto. La variable en la pila es una matriz u objeto de referencia, que se puede usar para hacer referencia a la variable después del programa para acceder a la matriz de la pila u objeto en el montón.
Las variables de referencia son variables ordinarias que se asignan en la pila cuando se definen y las variables a las que se hace referencia se liberan después de que el programa excede su alcance.
Hebei Computer Training/Discovery y las matrices y los objetos en sí se asignan en el montón. Incluso si su aplicación utiliza una nueva matriz u declaración de objeto en un bloque de código, la memoria ocupada por las matrices y los objetos en sí no lo hará. ser liberado, Las matrices y los objetos sin variables de referencia que apunten a ellos se convierten en un desperdicio, ya no están en uso, pero aún ocupan espacio de memoria, seguido por el recolector de basura en un momento indeterminado.