No tienes acceso a esta clase

¬°Contin√ļa aprendiendo! √önete y comienza a potenciar tu carrera

Memory Heap

7/13
Recursos

El comportamiento de JavaScript es síncrono, es decir, solamente puede ejecutar una tarea a la vez. Esto puede ser beneficio o perjudicial dependiendo los casos. Por ende, para ejecutar cada tarea, JavaScript se organiza en dos estructuras de datos: el Memory Heap y el Call Stack.

Qué es Memory Heap

El memory heap consiste en una manera desorganizada o aleatoria de guardar la informaci√≥n, ya sea valores, funciones, entre otros. ¬ŅRecuerdas el componente de tu computador que guarda informaci√≥n de manera aleatoria? Exactamente, la RAM es donde guardar√° esta informaci√≥n mediante una referencia o direcci√≥n.

Por ejemplo, declaras una variable nombre y le asignas un valor, esta se guardará en la memoria RAM utilizando una referencia que manejará el memory heap. De esta manera, el Engine sabrá que variable mostrar cuando sea utilizada después de la declaración, pidiendo la referencia de memoria al memory heap y buscándola en la memoria RAM.

Representación del memory heap para almacenar datos

Valores por referencia

¬ŅQu√© pasa con estructuras m√°s complejas, como arrays u objetos? Pues que estas se guardar√°n en una direcci√≥n de memoria diferente a sus valores, pero referenciadas entre s√≠. Por ejemplo, mira el siguiente c√≥digo y piensa cu√°l es el resultado:

const objeto1 = {valor: 1}
const objeto2 = objeto1
objeto2.valor = 2

console.log(objeto1.valor)
console.log(objeto1 === objeto2)

Primero mostrará el valor 2 y después true. La explicación es que la referencia de ambos objetos a sus valores es la misma, por lo que si modificas un valor, también lo harás en ambos.

Par√°metros de referencia para dos objetos

Contribución creada por Andrés Guano.

Aportes 79

Preguntas 11

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Los objetos en JS (objetos, arrays, funciones y b√°sicamente todo lo que no sea un valor primitivo) se almacenan en la parte de memoria que de llama Memory Heap. Los valores primitivos son almacenados en el Call Stack, dentro del Scope (Contexto de Ejecuci√≥n de la funci√≥n que tenga acceso a esa variable). Acceder al Call Stack es mucho m√°s r√°pido que al Heap. Adem√°s, en el Call Stack tambi√©n se guardan las referencias, ‚Äúcomo si fueran valores primitivos‚ÄĚ. Cuando se asigna una variable a otra y esta apunta a un objeto, se copia la referencia, como si fuera un valor primitivo. Si el objeto tiene atributos como un n√ļmero por ejemplo, este se guarda en la posici√≥n de memoria reservada para ese objeto. Los objetos tambi√©n pueden tener m√°s objetos dentro. En ese caso, dentro de la posici√≥n de memoria de ese objeto se va a guardar una referencia a otra posici√≥n de memoria

Memory Heap

  • Donde se almacena los valores de las variables y las funciones
  • Se destina un espacio en memoria para las variables.
  • La informaci√≥n en el memory heap, No se guarda de manera lineal

Que es el memory heap?

Es un lugar donde se guardan objetos y funciones en bloques de memoria de forma arbitraria y sin un orden, los cuales pueden ser usados m√ļltiples veces y sin una referencia unica.

parece el cerebro, no sabes donde guardas lo que aprendes

La forma en que funciona el Memory Heap se llama almacenamiento por nodos, al momento de almacenar la variable/objeto lo encapsula y le asigna un id y un id padre, esto se conoce como nodos, lo que le permite al motor saber cuales son las variables y su contenido enlazado en caso que sea un objeto. As√≠ el motor administra la memoria y este ‚Äúestante‚ÄĚ es limpiado una vez termina la ejecuci√≥n del JS

El memory heap se guarda en la RAM, y esta es una memoria volátil (Es decir, no puede preservar la información una vez el computador se apaga)
Por lo que, si se cierra el navegador o se apaga el computador, lo que haya estado en el memory heap se pierde.

Les recomiendo este video. Lo vi hace un tiempo y tambien es habla de callstack.

Philip Roberts: ¬ŅQue diablos es el ‚Äúevent loop‚ÄĚ (bucle de eventos) de todos modos? | JSConf EU

  • Guarda las variables y funciones de manera no lineal en la memoria como si se tratara de una repisa

Si quieren hacer código rápido en el navegador sin tener que estar en alguna página web solo tienen que poner la url de **about:blank **y les saldra una página totalmente en blanco.

rip, el profe siempre inicia con preguntas de ¬Ņcomo est√°s?/¬Ņc√≥mo vas? y nadie le responde ūüė¶

MEMORY HEAP.!
It’s that space in memory where the engine saves values under the variable names so when they are called from the call-stack this will have a direct link to those values.
Complex variables have different spaces within the memory heap.

Les comparto mis apuntes, espero les sea de ayuda.

El memory heap guarda todos los datos de manera ‚Äúdesordenda‚ÄĚ, pero JavaScript sabe en d√≥nde est√°n esos datos.

JavaScript es un lenguaje de un solo hilo, aunque pudiera parecer multitarea, este efecto es gracias al Event Loop:D!

<h3>ūüöÄ ‚öôÔłŹ ¬ŅC√≥mo almacena la informaci√≥n JavaScript?</h3>

Los objetos

Los objetos en JS (objetos, arrays, funciones y b√°sicamente todo lo que no sea un valor primitivo) se almacenan en una parte de memoria que de llama Memory Heap.

Los valores primitivos

Los valores primitivos son almacenados en algo llamado Call Stack.

El scope y su forma de trabajar.

  1. Dentro del Scope o el Contexto de Ejecución. Acceder al Call Stack es mucho más rápido que al Heap.
  2. Adem√°s, en el Call Stack tambi√©n se guardan las referencias, ‚Äúcomo si fueran valores primitivos‚ÄĚ.
  3. Cuando se asigna una variable a otra y esta apunta a un objeto, se copia la referencia, como si fuera un valor primitivo.
  4. Si el objeto tiene atributos como un n√ļmero por ejemplo, este se guarda en la posici√≥n de memoria reservada para ese objeto.
  5. Los objetos también pueden tener más objetos dentro. En ese caso, dentro de la posición de memoria de ese objeto se va a guardar una referencia a otra posición de memoria

Memory Heap => Donde todos los datos son guardados: variables, funciones, objetos.
Call Stack => Determina el ORDEN en el que las cosas son llamadas

Yo creo que js puede ser todo lo asincrónico que quieras, otra cosa es que te lo permita tu engine. Los lenguagajes de programación ni son asincronos ni son síncronos, lo que es sincrono o asíncrono es el engine que los corre.

Cuando nos referimos al código de ejecución, estamos entrando en el tema de la sincronía de JavaScript, esto quiere decir que JavaScript puede realizar una tarea a la vez, y no varias al mismo tiempo.

El Memory Heap es el lugar de la memoria donde se almacenan los valores de las variables (variables, funciones, arrays, objetos). Y esto se conecta directamente con la pila de ejecución (Call Stack).

Veamos un ejemplo. Cuando nosotros declaramos una variable, ¬Ņqu√© ocurre?

const nombre = "Sebastian";

El motor de JavaScript lee cada uno de los keywords (const = variable, nombre = nombre de la variable, ‚ÄúSebastian‚ÄĚ = valor de la variable) y designa un espacio en la memoria para esta variable. Si llamamos a la variable posteriormente, el motor nos devuelve el valor de esta.

console.log(nombre)
// Sebastian

Con esto, podemos entender al Memory Heap como un estante en donde podemos almacenar los datos (variables y funciones) (cada uno en una sección del estante) y luego podremos retirarlos si lo deseamos. Algo curioso es que el Memory Heap no tiene un orden específico para guardar las variables (orden lineal), sino que puede tener estos datos guardados en distintas partes de la memoria y esto no afectará a la ejecución del código.

SINGLE THREAD (Synchronous)

- Javascript solo puede hacer una tarea a la vez

MEMORY HEAP

- Donde se guardan los valores de todas nuestras variables, constantes y lets, así como las funciones
- No se guarda de forma numerica o lineal, se guardan en diferentes partes

El motor JS V8

Un video para que profundicen Link
Un breve resumen de las clases, espero les sirva .

Una vez que Chrome recibe el código o los scripts javascript en la página web, el motor JS V8 comienza a analizarlo. Primero, analizará parcialmente el código comprobando errores de sintaxis. Si no encuentra ninguno, comienza a leer el código de arriba a abajo. Su objetivo final es convertir el código javascript en código de máquina que la computadora pueda entender. Pero antes de comprender qué hace exactamente con el código, debemos comprender el entorno en el que se analiza.

Event Loop

Tarea asignada para mover del Tas Queue al Stack, Solo si el Stack esta vacío

Memory Heap (Montón)

  • Donde se almacena los valores de las variables y las funciones
  • Se destina un espacio en memoria para las variables.
  • La informaci√≥n en el memory heap, No se guarda de manera lineal

EL MONT√ďN

El primer contenedor en el entorno, que tambi√©n forma parte del motor V8 JS Engine, se denomina ‚Äúmont√≥n de memoria‚ÄĚ.¬†A medida que el motor JS V8 encuentra variables y declaraciones de funciones en el c√≥digo, las almacena en el¬†mont√≥n¬†.

Call Stack (Pila) = El ultimo que entra es el primero en salir

  • Como se mandan a llamar las variables y las funciones
  • Las tareas en el callstack se apilan de abajo hacia arriba.
  • Se llaman de la √ļltima que mandamos a llamar hacia abajo
  • En la base de la pila reposa el Global Object
  • Si una funci√≥n llama a otra, la pone encima de la pila.
  • Se ejecuta una tarea a la vez (sincron√≠a)
  • Una vez que se van ejecutando las tareas se van retirando de la pila
  • Al ejecutar todas las tareas se retira el Global object.

LA PILA

El segundo contenedor en el entorno se denomina ‚Äúpila de llamadas‚ÄĚ.¬†Tambi√©n es parte del motor JS V8.¬†Cuando JS Engine encuentra un elemento procesable, como una llamada a funci√≥n, lo agrega a la¬†pila¬†.

Task Queue (Cola) = El primer que entra es el primero en salir

Cola de tareas, se maneja la concurrencia, se agregan las tareas que ya están listas para pasar el stack (Pila). El stack debe de esta vacío

MicroTask Queue (Micro Tareas)

Las promesas tienen otra forma de ejecutarse y una prioridad superior

Web APIs

JavaScript del lado del cliente: setTimeout, XMLHttpRequest, File reader, DOM

Node: fs, https

Garbage Collection

limpia la memoria de los datos no utilizados para no sobrecargarla y seguir trabajando sin problemas.

En terminos simples lo que entendi es que JS almacena temporalmente las variables y funciones en el memory heap, la cual se crea en una zona de la RAM.
Si has estudiado un poco de otros lenguajes sabes que las variables se almacenan en la ram temporalmente mientras se esta ejecutando el codigo. La diferencia de JS es que lo hace de forma aleatoria, sin ningun orden, sino que les asigna un id, y por medio de él las encuentra cuando las llamamos.

  • Recordemos que en JS nosotros podemos almacenar objetos y funciones dentro de una variable, por lo que estas tambien se almacenan ahi, reservando un espacio en el memory heap un poco mas grande que las variables de un solo dato.
    (var, let, const, objetos, funciones, arrays) = variable

MY NOTES FOR MEMORY HEAP
En esta clase veremos el memory heap que es la parte donde se guardan la variables y las funciones.

Single thread(Synchronous) Sincronia

Cuando hablas del comportamiento del codigo, hablamos un poco sobre la sincronia en javascript esto quiere decir que js puede realizar una tarea a la vez y nada mas y esto puede ser bueno o malo para algunas cosas

El memory heap lo podemos representar como una repisa en la cual vamos a estar almacenando datos de nuestras variables y también todas nuestras funciones

Esto no se guardara de manera numerica ni tampoco de forma lineal, js puede guarar en el memory heap en diferentes partes, nosotros no vamos a saber en donde esta de forma directa pero js lo va a estar guardan

para que cuando se ejecute el codigo y mando llamar la variable que ya tiene datos en ella guardados, pueda mostrarme la informacion que tiene esta variable.

El motor de Javascript hace mucho trabajo por nosotros. Pero lo más importante es leer nuestro código y ejecutarlo. Las dos cosas importantes principales en este paso son:

  • Necesitamos un lugar para almacenar y escribir informaci√≥n: datos para nuestra aplicaci√≥n (variables, objetos, etc.)

  • Necesitamos hacer un seguimiento de lo que sucede con nuestro c√≥digo l√≠nea por l√≠nea.

By: https://bit.ly/2UDxera

MEMORY HEAP: lugar - en la RAM - donde se almacenan los valores de las variables, funciones y objetos; y que son guardados de forma no lineal ni numérica.

Entonces el Memory heap guarda objetos (tomo en cuenta que las variables son objetos en javascript) y funciones de forma arbitraria y sin orden.

Es donde se van a almacenar los valores de las variables y de las funciones.

Cuando hablamos del código de ejecución, hablamos del comportamiento de JS y hablamos de su sincronía, esto quiere decir que JS solo puede hacer una tarea a la vez.

Cuando generamos una variable lo que hace el motor de JS, lee la variable y sabe que tiene que destinarle un espacio para guardar esa variable y su valor.

Podemos representar el Memory Heap que es como una repisa, que es un lugar donde JS guardara una variable sencilla en un espacio, pero si guardamos un valor mas complejo como un objeto, esto ocupara mas espacio. En resumen esa es la representación del memory heap, una repisa donde guardamos los valores de nuestras variables u objetos.

Memory Heap: Es el espacio del navegador donde se almacenan los datos y valores de las variables y funciones.

Memory HEAP -> es donde estamos guardando los valores de las variable y las funciones

Single thread (Synchronous)
JavaScript solo puede hacer una tarea a la vez

Memory HEAP Call Stack
*
**
* *************
* *************


			global object

Gran aporte.

Tengo una confusi√≥n, ¬Ņtodos los valores tanto primitivos como objetos van al memory heap?
al parecer depende…
https://stackoverflow.com/questions/45260121/are-primitive-reference-types-stored-on-the-heap-or-on-the-stack

Memory Heap donde se almacena la variables y las funciones

var const y let va para el Memory heap al igual que las funciones

esto valores se guardan de forma aleatoria en la memoria

la definición es muy pobre

Os comparto documentación para ampliar la información:
Gestión de Memoria

Tengo una duda cuando habla del memory heap se esta refiriendo a la memoria RAM??

Interesante estos conceptos

Buenas ūüĎč

https://felixgerschau.com/javascript-memory-management/#:~:text=JavaScript engines have two places,engine uses for different purposes.

Recomiendo este articulo donde se explica de manera clara que es la memoria heap y stack en esencia.

Que esta bien relacionado con como JS asigna espacio en memoria segun lo que querramos guardar.

Segun este post tanto la memoria heap como stack no son mas que estructuras de datos, que se utilizan para organizar informacion en memoria de cierta manera(estructura).

Espero que sea de utilidad ūüĎć

Las variables de tipo primitivo se guardan en la sección de memoria Stack , por ser esta muy rápida pero con poco almacenamiento.

En cambio los objetos se guardan con un pointer en la sección de memoria Stack que apuntara a la sección de memoria Heap la cual contendrá el objeto como tal.

Este tipo de memoria es mas lenta pero con mas capacidad para guardar datos mas grandes como objetos.

Cuando hablamos de Código de ejecución hacemos referencia a 2 cosas.
.
El código de ejecución:

  • Donde se van a almacenar los valores de las variables y las funciones.
  • CallStack

Código de ejecución es conocido por el comportamiento de lo que es JavaScript, esto quiere decir que entramos ya en la sincronía de JavaScript.
Esto quiere decir que JavaScript solo puede hacer una tarea a la vez, no m√°s.

  • la memory heap es como una repisa donde se guardan las variables y funciones.

  • la informacion no se guarda de manera lineal

  • la memory heap se guarda en la RAM por lo que es memoria volatil y se pierde una vez el navegador se ciera

Hola comunidad! Como va?
Les comparto mi carpeta propia de Google Docs para que entre todos podamos ir aportando a esta toma de notas!

Hay varios cursos ya hechos y con mi toma de notas incluyendo aportes que vi en la plataforma y también propios, la idea es que entre todos lo mejoremos!

https://drive.google.com/drive/folders/1SWGMgTMPbwgasbzcivcpcnIudc2vk_v0?usp=sharing

entiendo lo del memory heap, pero la pregunta es... ¬Ņla memory heap es la memoria base o la RAM? Osea, si tengo 2 gigas de memoria ssd, entonces tengo 2gb Max de memory heap?

Lo más valioso que he aprendido es que durante todo el proceso de aprendizaje el conocimiento va evolucionando a medida que nos esforzamos a salir de nuestra zona de confort enfrentandonos a temas nuevos, dificiles y lejos de nuestra imaginación.

  • Javascript s√≥lo puede hacer una tarea a la vez.
  • Memory Heap es como la repisa donde guardamos los valores de nuestras variables y funciones.

El profesor Diego De Granda preguntandome como vas como te sientes? i Felt that. De repente son días díficiles de no entiendo. pero bueno se trata de seguirle.

el Memory heap es donde se almacena el espacio y los valores de las variables, constantes y objetos declaradas e iniciadas.

En el curso de POO de JavaScript de JuanDC en uno de esos vídeos explica muy bien que es la memoria Heap, etc, etc.

Memory Heap es como una repisa para almacenar datos. El Memory Heap es dónde nosotros estamos guardando los valores de nuestras variables y funciones.

El Memory Heap es la repisa donde se almacenan los datos del código. No sabemos directamente en qué parte del Memory Heap está cada dato pero si sabemos que está guardado y listo para usarse.

memory heap es donde guardas los valores de tus variables y funciones.

no veo preguntas muchas preguntas sobre las clases de este curso, este profe explica muy bien, espero que siga dando mas cursos.

Me siento melo melo ūüėĄ

Wow!

Se complementa con lo que llamamos: Asincronismo.

ūüėÉ

Sigamos

Para obtener los valor de las variables y funciones, est√°s se buscan en el memory heap.

comprendo el concepto de hoisting, pero si es que se aplica a variables y funciones, por qué cuando manda llamar a ambas la variable devuelve undefined (hoisting) pero la funcion se ejecuta perfectamente, como es eso?

Entendido

ūüĎćūüĎć

Es donde guardamos en un espacio en memoria nuestra variables y funciones y cunado las llamamos por su nombre se ejecutan estas. Estas no se encuentran guardadas de forma lineal se encuentran en diferente orden esperando a la llamada de esta.

Explicación de memoryHeep

Vaya, lo tuve que ver dos veces para entenderlo perfectamente. ūüôĆ Gran clase

Memory Heap

Javascript es sincrono**(single thread)** , es decir que solo puede hacer una tarea a la vez.

Es una repiza donde guardamos el valor de nuestras variables y funciones y lo almacena de manera aleatoria.

Ac√° algo m√°s sobre Memory Heap y el Engine de JS

Es como una memoria temporal??

Es importante saber que todo esto del Memory Heap se guarda en la memoria RAM o incluso en el cache

F por el audio

Bien explicado!

ūü߆ Memory Heap

<h4>Ideas/conceptos claves</h4>

Memory Heap ‚áí Es donde se guardan las variables de tipo de objeto

<h4>Apuntes</h4>
  • Single thread (Synchronous)
    • Solo puede hacer una tarea a la vez
var nombre = "Juan Carlos Bodoque"
const edad = 40

RESUMEN: Memory Heap es donde se guardan todas las variables de tipo Objeto

Si están en la consola del navegador y quieren dar un enter y seguir escribiendo sin ejecutar el código lo hacen con la combinación de teclas shift enter

memory heap : **Es el lugar donde se guardan los valores primitivos **

El memory heap es el espacio en memoria donde se guardan todas las funciones, variables, objetos, arrays del código, como objetos de forma no lineal e independiente, creando una referencia a ese dato al cual con dicha referencia luego se puede acceder al contenido de forma más sencilla.

done!

Desde la clase Objetos y Tipos de Memoria en JavaScript:
… los objetos utilizan la Memory Heap, una memoria que nos permite guardar grandes cantidades de información pero con un poco menos de velocidad.
EN el Memory Heap todo es como una repisa, en donde colocas en cualquier parte de la repisa los datos para guardar.

Genial!

Muy interesante!
Entonces en memoria crea un registro de la variable junto a su valor?
O crea 2 registros?
uno de la variable y otro de su valor?