una studio programa persona para nacimiento meses fecha edad dias como calcular años java .net memory-management

studio - fecha de nacimiento en java



¿El montón realmente es un montón? (4)

Posibles duplicados:
¿Por qué dos conceptos diferentes se llaman "montón"?
¿Cuál es la relación entre "un" montón y "el" montón?

En .NET (y Java, hasta donde yo sé), el área donde los objetos se asignan dinámicamente se conoce como el montón administrado. Sin embargo, la mayoría de la documentación que describe cómo funciona el almacenamiento dinámico administrado lo representa como una estructura de datos lineal, como una lista o pila vinculada.

Entonces, ¿el montón administrado realmente es un montón , o está implementado con alguna otra estructura de datos? Si en realidad no utiliza una estructura de datos de montón, parece una falla significativa de la terminología sobrecargar el significado de esta palabra.

Si de hecho es una estructura de datos de montón, ¿cuál es el valor que satisface la propiedad de montón: el tamaño de la región de memoria asignada?


Ciertamente no tengo el conocimiento histórico para comentar sobre esto con ninguna autoridad, pero creo que el término "montón" como se emplea para describir el mecanismo de asignación de memoria para objetos de vida más larga en .NET y Java tiene más la intención de ser evocador, descriptivo como una palabra, este gran desestructurado (desde el punto de vista del desarrollador) masa de memoria donde las cosas viven. La "pila" en contraste evoca la imagen de una región de datos mucho más estructurada (nuevamente, desde el punto de vista del desarrollador): "dónde" las cosas viven en la pila se siente mucho más relevante que "dónde" viven en el montón.

Esto es claramente muy diferente de la estructura de datos de montón real, que usa la palabra "montón" para referirse a la llamada propiedad de montón (de Wikipedia):

si B es un nodo secundario de A, entonces la clave (A) ≥ clave (B).

Entonces sí, en realidad no tienen relación. Uno es solo un término descriptivo mientras que el otro tiene una definición mucho más formal.


En este sentido, "montón" significa: un área especial de memoria utilizada para almacenar recursos importantes. En ese contexto, no está relacionado con la "estructura de datos del montón".


No estoy seguro de mi respuesta, pero por lo que sé en idiomas como C # o Java, donde se gestiona la memoria de mi Garbage Collector, la región de la memoria no es lineal. El GC libera la memoria que puede liberarse y cuando la memoria es baja, compacta la memoria realizando algún tipo de desfragmentación. Mueve los bloques de memoria que usa el programa para crear un espacio en "el final". ¿Por qué necesitas esta respuesta? ¿Desea realizar alguna gestión de memoria de bajo nivel?


No, el montón no es un árbol binomial ordenado en montón en absoluto. No está claro (para mí) de quién es la culpa del choque de terminología, pero ambos usos de la fecha del montón datan de hace décadas (parece que a mediados de 1970). Parte de la historia se analiza en este artículo .