[컴퓨터공학]가비지 컬렉션, 캐시

윤태영 | Taeyoung Yoon·2022년 5월 27일
0

TIL (Today I Learned)

목록 보기
47/53
post-thumbnail

가비지 컬렉션

프로그램에서 더 이상 사용하지 않는 메모리를 자동으로 정리하는 기능이다.
이 기능을 가진 언어나 엔진은 자바,자바스크립트,C# 등이 있다.

트레이싱

한 객체에 flag를 두고 가비지 컬렉션 사이클마다 flag에 표시 후 삭제하는 mark and sweep 방법이다.

객체에 in-use flag를 두고 사이클마다 메모리 관리자가 모든 객체를 추적해서 사용 중인지 아닌지 표시한 후
표시되지 않은 객체를 삭제하는 단계를 통해 메모리를 해제한다.

레퍼런스 카운팅

한 객체를 참조하는 변수의 수를 추적하는 방법이다.

객체를 참조하는 변수는 처음에는 특정 메모리에 대해 레퍼런스가 하나이지만
변수의 레퍼런스가 복사될 때마다 레퍼런스 카운트가 늘어난다.

객체를 참조하고있는 변수의 값이 바뀌거나 변수 스코프를 벗어나면 레퍼런스 카운트는 줄어든다.
레퍼런스 카운트가 0이 되면 그 객체와 관련한 메모리는 비울 수 있다.

캐시

  • Cache란 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다.
  • 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공한다.
  • 캐싱을 사용하면 이전에 검색하거나 계산한 데이터를 효율적으로 재사용할 수 있다.
  • 캐시의 데이터는 일반적으로 RAM과 같이 빠르게 엑세스 할 수 있는 하드웨어에 저장되며, 소프트웨어의 구성 요소와 함께 사용될 수도 있다.
  • 속도를 위해 용량을 절충하기 때문에 일시적으로 저장한다. 영구적인 데이터가 있는 데이터베이스와는 대조적이다.
캐시데이터베이스
하드웨어RAMSSD,HDD
속도빠름느림
데이터일시적영구적

캐시의 장점

  • 애플리케이션 성능 개선
  • 데이터베이스 비용 절감
  • 백엔드 부하 감소
  • 예측 가능한 성능
  • 데이터베이스 핫스팟 제거
  • 읽기 처리량 증가

웹서비스에서 캐시가 적용되는 예제

  • 클라이언트
    HTTP 캐시 헤더, 브라우저
  • 네트워크
    DNS 서버, HTTP 캐시 헤더, CDN, 리버스 프록시
  • 서버 및 데이터베이스
    키-값 데이터 스토어(e.g. Redis), 로컬 캐시(인-메모리, 디스크)

메타인지

🎯 오늘의 학습목표

  • 가비지 컬렉션에 대해 이해할 수 있다.
  • 웹 서비스에서 사용하는 다양한 캐싱의 사례를 이해할 수 있다.

😎 학습할 내용 중에 알고 있는 것

캐시 기초 개념

✏️ 오늘 새롭게 학습한 것

가비지 컬렉션, 캐시

🧷 오늘 학습한 내용 중 아직 이해되지 않은 부분

가비지 컬렉션과 캐시의 사용 예시

💡 이해되지 않은 내용을 보완하기 위해 무엇을 할까

영상자료를 참고해본다.

0개의 댓글