TIL.Garbage Collection 및 Cashing

const_yang·2022년 2월 9일
0

TIL

목록 보기
14/14
post-thumbnail

가비지 컬렉션

  • 더 이상 사용하지 않는 메모리를 자동으로 삭제 (자바, C#, 자바스크립트 등에서 쓰인다)
  • C++, C에는 가비지 컬렉터가 내장되어있지 않다.

대표적인 가비지 컬렉션 종류####

  • 트레이싱: 객채에 in-use flag를 마크하고 가비지 컬렉션 사이클마다 마크되지 않은 객체를 삭제
  • 레퍼런스 카운팅: 변수가 참조될 때 마다 카운트가 올라가고, 참조하고 있는 변수 값이 바뀌거나 변수 스코프를 벗어나면 카운트가 줄어든다. 카운트가 0이 되면 참조가 되지 않고 있다고 보고 관련 객체의 메모리를 지울 수있다.

Chrome이나 Node.js v8 엔진의 경우 어떻게 가비지 컬렉팅?

캐싱

일시적인 특징이 있는 데이터 하위 집합을 저장하는 고속 데이터 스토리지 계층 => 해당 데이터에 대한 요청이 있을 경우 실제 데이터 접근보다 빠르게 접근이 가능하다

  • 저장: RAM(Random Access Memory)과 같이 빠르게 접근할 수 있는 하드웨어에 저장

캐싱이 적용되는 예제

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

계층과 이점

* 데이터베이스의 부하를 줄일 수 있다. * 인 메모리 캐시를 사용하면 데이터를 읽는 속도를 높일 수 있다. * 디스크를 사용하는 데이터베이스에 비해, 주로 인메모리를 사용하는 캐시 때문에 더 빠른 읽기 작업을 할 수 있다.

단점

  • 아키텍처 계층이 많아진다.
  • 일시적인 데이터만 저장 가능하다.

0개의 댓글