https://ljtaek2.tistory.com/142
https://ljtaek2.tistory.com/129?category=897337
-> 이벤트 루프(태스크 큐)
실행 컨텍스트 & 콜 스택:
실행 컨텍스트는 자바스크립트 코드가 실행될 때 함수마다 만들어지는 환경. 함수가 호출될 때마다 실행 컨텍스트가 만들어지고 콜 스택에 쌓임. 코드 실행이 끝나면 해당 실행 컨텍스트는 콜 스택에서 제거.
가비지 컬렉션:
자바스크립트는 메모리를 자동으로 관리하는 가비지 컬렉터를 가지고 있음. 참조 관계가 없는 메모리(더 이상 사용되지 않는 변수나 함수 등)는 자동으로 가비지 컬렉션에 의해 메모리가 해제.
참조 관계가 있는 경우 (클로저):
클로저는 함수가 외부 함수의 변수에 접근할 수 있도록 참조를 유지하는 메커니즘. 실행 컨텍스트가 종료되어도 클로저에 의해 변수 참조가 유지되면 가비지 컬렉션에서 제거되지 않고 남아 있음.
예를 들어, 내부 함수가 외부 함수의 변수를 참조하는 경우, 외부 함수가 종료되어도 내부 함수가 그 변수를 계속 사용할 수 있기 때문에 메모리가 해제되지 않음.
💫
실행컨텍스트에서 모든 코드가 전부 실행되었을 때
그 실행 컨텍스트는 풀스택에서 제거가 됨
참조 관계가 없으면 가비지 컬렉션
참조 관계가 있으면 가비지 컬렉션 예외 (클로저)
Producer(생산자):
비동기 작업을 실행하는 코드
비동기 작업 실행 코드의 상태
Consumer(소비자):
Promise의 결과를 소비하는 코드를 의미
pending:
코드가 실행되었으나 응답은 오지 않은 상태
fullfiled(이행):
코드가 성공적으로 실행된 상태
rejected(거부):
코드가 실패한 상태