Computer Science TIL 04

Nabang Kim·2021년 9월 10일

Computer Science

목록 보기
4/4
post-thumbnail

2021년 9월 10일에 작성된 문서 입니다.
Computer Science 배운 내용을 정리했습니다.



가비지 컬렉션

1. 가비지 컬렉션

프로그램에서 더 이상 사용하지 않는 메모리를 자동으로 정리하는 것

  • 가비지 컬렉션 기능을 가진 언어(혹은 엔진): 자바, C#, 자바스크립트 등


2. 대표적인 가비지 컬렉션의 방법은 무엇이 있나요?

  • 트레이싱:
    • 한 객체에 flag를 두고, 가비지 컬렉션 사이클마다 flag에 표시 후 삭제하는 mark and sweep 방법
    • 객체에 in-use flag를 두고, 사이클마다 메모리 관리자가 모든 객체를 추적해서 사용중인지 아닌지를 표시(mark)
    • 표시되지 않은 객체를 삭제(sweep)하는 단계를 통해 메모리를 해제
  • 레퍼런스 카운팅:
    • 한 객체를 참조하는 변수의 수를 추적하는 방법
    • 객체를 참조하는 변수는 처음에는 특정 메모리에 대해 레퍼런스가 하나뿐
    • 변수의 레퍼런스가 복사될 때마다 레퍼런스 카운트가 늘어남
    • 객체를 참조하던 변수의 값이 바뀌거나, 변수 스코프를 벗어나면 레퍼런스 카운트는 줄어듦.
    • 레퍼런스 카운트가 0이 되면, 그 객체와 관련한 메모리는 비울 수 있다.
    • (레퍼런스 카운트가 0이 된다) = (아무도 그 객체에 대한 레퍼런스를 가지고 있지 않다.)



캐시

1. 캐시

일반적으로 일시적인(temporarily) 데이터를 저장하기 위한 목적으로 존재하는 고속의 데이터 저장공간

  • 첫 작업 이후에 이 데이터에 대한 요청이 있을 경우, 데이터의 기본 저장공간에 접근할 때보다 더 빠르게 요청을 처리할 수 있다.
  • 캐싱을 사용하면 이전에 검색하거나 계산한 데이터를 효율적으로 재사용할 수 있다.


2. 캐시의 작동원리

  • 캐시의 데이터는 일반적으로 RAM(Random Access Memory)과 같이 빠르게 액세스할 수 있는 하드웨어에 저장
    • 소프트웨어 구성 요소와 함께 사용될 수도 있다.
    • 캐시는 기본 스토리지 계층(SSD, HDD)에 액세스하여 데이터를 가져오는 더 느린 작업의 요구를 줄이고, 데이터 검색의 성능을 높인다.
  • 속도를 위해 용량을 절충하는 캐시는 일반적으로 데이터의 하위 집합을 일시적으로 저장

    완전하고 영구적인 데이터가 있는 데이터베이스와는 대조적입니다.



3. 캐시의 장점

  • 애플리케이션 성능 개선
  • 데이터베이스 비용 절감
  • 백엔드 부하 감소
  • 예측 가능한 성능
  • 데이터베이스 핫스팟 제거
  • 읽기 처리량 증가
    • 읽기 처리량:
      • IOPS;
        • Input/output operations per second.
        • HDD, SSD 등의 컴퓨터 저장 장치의 성능 측정 단위


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

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






Written with StackEdit.

0개의 댓글