관리 메뉴

평행우주 : world 1

[컴퓨터공학] 가비지 컬렉션 본문

텃밭 3 : BE/컴퓨터구조 | 공학

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

parallelworlds 2022. 2. 27. 16:50
 

가비지 컬렉션

  • 프로그램에서 더 이상 사용하지 않는 메모리를 자동으로 정리하는 것
  • 자바, C#, 자바스크립트에서 사용하는 방법

 

 

대표적인 가비지 컬렉션 방법

트레이싱

  • 한 객체에 flag를 두고, 가비지 컬렉션 사이클마다 flag에 표시 후 삭제하는 mark and sweep 방법
  • 객체에 in-use flag를 두고, 사이클마다 메모리 관리자가 모든 객체를 추적해서 사용중인지 아닌지를 표시(mark)
  • 그 후 표시되지 않은 객체를 삭제(sweep)하는 단계를 통해 메모리 해제

 

레퍼런스 카운팅

  • 한 객체를 참조하는 변수의 수를 추적하는 방법
  • 객체를 참조하는 변수는 처음에는 특정 메모리에 대해 레퍼런스가 하나지만,
  • 변수의 레퍼런스가 복사될 때마다 레퍼런스 카운트가 늘어나게 된다.
  • 객체를 참조하고 있던 변수의 값이 바뀌거나, 변수 스코프를 벗어나면 레퍼런스 카운트는 줄어든다
  • 레퍼런스 카운트가 0이 되면, 그 객체와 관련한 메모리를 비울 수 있게 된다
  • 레퍼런스 카운트가 0이 된다는 말은 아무도 그 객체에 대한 레퍼런스를 가지고 있지 않다는 것

 

+)

추가자료 : Memory terminology

 

 

 

Comments