TIL-211231

EBinY·2021년 12월 31일
0

TIL - Today I Learned

목록 보기
33/54

가비지 컬렉션(Garbage Collection)

모던JS - 가비지 컬렉션

  • 가비지 컬렉션: 프로그램에서 더 이상 사용하지 않는 메모리를 자동으로 정리하는 기능
  • 자바, C#, JS 등이 이 기능을 가지고 있음(C,C++은 따로 구현해줘야 함)
  • 트레이싱: 객체에 in-use flag를 두고, 사이클마다 메모리 관리자가 모든 객체를 추적, 사용 중인지 아닌지를 표시(mark), 표시되지 않은 객체를 삭제(sweep)하는 단계를 통해 메모리를 해제
  • 레퍼런스 카운팅: 한 객체를 참조하는 변수의 수를 추적하는 방법
    • 객체를 참조하는 변수는 처음에는 특정 메모리에 대해 레퍼런스가 하나뿐
    • 변수의 레퍼런스가 복사될 때마다 레퍼런스 카운트가 늘어남
    • 객체를 참조하던 변수의 값이 바뀌거나, 변수 스코프를 벗어나면 레퍼런스 카운트는 감소
    • 레퍼런스 카운트가 0이 되면, 객체에 대한 레퍼런스를 아무도 쓰지 않는 다는 얘기, 그 객체와 관련한 메모리를 삭제
  • V8(Chrome, Node.js) 엔진의 가비지 컬렉션: heap 세대 구분 관리(generation)
    8시의복서 - V8 엔진의 가비지컬렉션
    Chrome - Memory terminology
    • minor GC(Scavenger), Major GC
    • new generation
      • semi-space(nersery)
      • semi-space(intermediate)
    • old generation

캐시(Cache)

AWS - 캐싱 개요

  • 캐시: 시간과 연산이 필요한 작업의 결과를 저장해 두는 것을 의미
    • 컴퓨팅에서 일시적인(Temporarily) 데이터를 저장하기 위한 목적으로 존재하는 고속의 데이터 저장 공간
    • 이전에 검색하거나 계산한 데이터를 효율적으로 재사용할 수 있음
  • 캐시의 일반적인 작동 원리
    • 일반적으로 RAM(Random Access Memory)과 같이 빠르게 엑세스할 수 있는 하드웨어에 저장
    • 소프트웨어 구성 요소와 함께 사용 가능
    • 기본 스토리지 계층(SSD, HDD)에 엑세스하여 데이터를 가져오는 더 느린 작업의 요구를 줄이고, 데이터 검색의 성능을 높인다
  • 캐시의 장점
    • 애플리케이션 성능 개선
    • 데이터베이스 비용 절감
    • 백엔드 부하 감소
    • 예측 가능한 성능
    • 데이터베이스 핫스팟 제거
    • 읽기 처리량 증가
      • 읽기 처리량: IOPS; Input/output operations per second. HDD, SSD 등의 컴퓨터 저장 장치의 성능 측정 단위
  • 웹 서비스에서 캐시가 적용되는 실제 사례
    • 클라이언트: HTTP 캐시 헤더, 브라우저
    • 네트워크: DNS 서버, HTTP 캐시 헤더, CDN, 리버스 프록시
    • 서버 및 데이터베이스: 키-값 데이터 스토어(Redis 등), 로컬 캐시(인-메모리, 디스크)

0개의 댓글