Red de conocimiento del abogados - Ley de patentes - ¿Por qué debemos distinguir el montón y la pila?

¿Por qué debemos distinguir el montón y la pila?

Texto original de referencia: blogs.com/andy-zhou/p/5327288.html

Primero, desde la perspectiva del diseño de software, la pila representa la lógica de procesamiento y el montón representa datos. Esta separación aclara la lógica del procesamiento. La idea de divide y vencerás. Esta idea de aislamiento y modularidad se refleja en todos los aspectos del diseño de software.

En segundo lugar, la separación del montón y la pila permite que el contenido del montón sea compartido por varias pilas (lo que también puede entenderse como varios subprocesos que acceden al mismo objeto). Los beneficios de este tipo de disfrute son muchos. Por un lado, este tipo de intercambio proporciona una forma efectiva de interactuar con datos (como: memoria compartida). Por otro lado, todas las pilas pueden acceder a las constantes y cachés compartidos en el montón, lo que ahorra espacio.

En tercer lugar, la pila debe dividirse en segmentos de direcciones debido a las necesidades del tiempo de ejecución, como guardar el contexto de operación del sistema. Dado que la pila solo puede crecer hacia arriba, limita su capacidad para almacenar contenido. El montón es diferente. Los objetos en el montón pueden crecer dinámicamente según sea necesario. Por lo tanto, la división de la pila y el montón hace posible el crecimiento dinámico. Solo es necesario registrar una dirección en el montón en la pila correspondiente.

En cuarto lugar, la orientación a objetos es la combinación perfecta de montón y pila. De hecho, no existe diferencia en la ejecución entre programas orientados a objetos y programas previamente estructurados. Sin embargo, la introducción de la orientación a objetos ha cambiado la forma de pensar sobre los problemas y se acerca más a la forma de pensar natural. Cuando desmontamos el objeto, encontrará que los atributos del objeto son en realidad datos, almacenados en el montón y el comportamiento (método) del objeto es ejecutar la lógica y colocarlo en la pila; Cuando escribimos objetos, en realidad escribimos la estructura de datos y la lógica para procesar los datos. Debo admitir que el diseño orientado a objetos es realmente hermoso.

En Java, la función Main es el punto de partida de la pila y el punto de partida del programa.

Siempre hay un punto de partida para ejecutar un programa. Al igual que el lenguaje C, Main en Java es el punto de partida. No importa qué programa Java, si encuentra principal, encontrará el punto de entrada para la ejecución del programa :)

¿Qué se almacena en el montón? ¿Qué se almacena en la pila?

Los objetos se almacenan en el montón. Lo que se almacena en la pila son referencias a tipos de datos y objetos básicos en el montón. El tamaño de un objeto es inestimable o puede cambiar dinámicamente, pero en la pila, un objeto solo corresponde a una referencia 4btye (el beneficio de la separación de la pila :)).

¿Por qué no poner tipos primitivos en el montón? Debido a que el espacio que ocupa es generalmente de 1 a 8 bytes (requiere menos espacio y, debido a que es un tipo básico, no habrá crecimiento dinámico), la longitud es fija, por lo que almacenarlo en la pila no tiene sentido. existen en el montón (también desperdiciará espacio, como se explicará más adelante). Se puede decir que las referencias a tipos y objetos básicos se almacenan en la pila, y todos tienen un número de varios bytes, por lo que cuando el programa se está ejecutando, se procesan de forma unificada. Sin embargo, existen diferencias entre los tipos básicos, las referencias a objetos y los objetos mismos, porque uno son los datos de la pila y el otro son los datos del montón. Uno de los problemas más comunes es el problema del paso de parámetros en Java.