Section 2. Stack/Heap

Wendy·2021년 2월 7일
0

Udemy - JavaScript: The Advanced Concepts

Section 2. Javascript Foundation

Call Stack

  • 코드 실행/명령을 위해 우리가 코드의 어디쯤 위치하는지 파악하는 용도
  • first-in-last-out
  • Stack Overflow : 최대 call stack 사이즈를 초과해서 쌓게되는 경우 error

Memory Heap

  • 저장용도
  • GC (Garbage Collection) :
    • 엔진이 사용하지 않는 데이터를 정리함
    • Mark and Sweep (root에 닿을수 없는 object를 해제)
    • non-determinism으로 인한 문제
      1) 때에 따라 실제 필요한것보다 더 많은 메모리를 쓰고있을수있다
      2) GC가 돌 때, 갑자기 시스템이 느려질 수 있다
  • Memory Leak 주요 케이스 :
    1) 전역변수
    2) Event Listener
    3) setInterval

JS runtime

  • JS 엔진 : Single Thread (Synchronous)
  • Web Api :
    . Dom, fetch, setTimeout... (Aynchronous)
    . window 객체에 들어가있는 함수들 (브라우저에서 제공, JS 종속된게 아님)
  • Event Loop + (Job Q ) + Callback Q
    1) web Api 동작 후 callback Q 저장
    2) call stack이 비면 Event loop 가 돌고 Q에 저장된 작업 호출
    3) 원래 callback Q만 있었는데, promise 용으로 우선순위가 높은 Job Q가 추가됨

Node.js

. JS를 브라우저밖에서 사용할수 있게 해주는 JS runtime (2009년~, C++)
. JS가 서버역할도 할 수 있게됨
. 멀티쓰레드 기반 서버는 쓰레드를 다 쓰면 기다려야하지만, Node.js에서는 쓰레드는 하나인 대신 기다림없이 비동기적으로 작업을 처리할 수 있음

궁금

  • JS 에서 사용되는 또다른 GC기법이 있나? : 예전엔 순환참조 사용. 2012년 이후 브라우저들은 Mark and Sweep을 사용
  • GC는 언제언제 수행되는거지? : 알 수 없음. 보통은 메모리 할당 중에 GC를 넘겨줌. React라면 component가 unmount 될 때도 실행됨.

읽어본 글

profile
개발 공부중!

0개의 댓글

관련 채용 정보