정글에서 따로 시키진 않았지만 전에 전공책에서 보던 내용을 따로 복습한것을 다시 리마인드 했다.
가비지 컬렉션에 대해서 다시 상기해보자
가비지 컬렉션(garbage-collection)
가비지 컬렉션..... 옛날에 고정 분할 기억장치 할당 기법을 운영할 시에 문제는 분할 크기를 결정하는 것 이었는데,
얼마나 큰 영역을 몇 개나 만들 것인가를 결정하는 것이다.
영어로는 garbage-collection 이라고 하고 그냥 쓰레기 수집. 필요한 공간을 내기 위해 필요없는 쓰레기 공간들을 모아서 버렸다고
생각하면 편하다.
알맞게 고정된 크기에 작업프로세스들이 들어온다고 해도 내부 단편화(internal freagmentation)와 외부 단편화가(external fragmentation) 이 일어난다.
이러한 단편화를 줄이기 위해 가변 분할 기억장치 할당 기법을 사용하는데
초기 작업들이 끝나서 그들이 사용하면 기억공간이 공백으로 남을 때까지도 기억 공간의 낭비가 그다지 분명하게 나타나지않는데,
공백들이 다른 작업들에 사용될 수 있기 때문이다.
실행을 기다리는 작업들에게 공백들을 할당했을 때부터 기억장치의 단편화가 발생한다.
다음과 같은 방법으로 단편화를 줄일 수 있다.
1 . 공백의 합병(coalescing holes): 이상에서 기억 공간의 공백이 발생하면 인접한 다른 기억공간의 공백과 합병한다.
이떄 빈 기억장소 리스트에 새로운 공백으로 기록할 수도 있고, 공백을 합병하여 하나의 공백으로 기록할 수 있다.
2. 기억장소의 집약(compaction) : 현재 사용되고 있는 모든 기억 공간을 주기억장치의 한쪽으로 모아서 가변공간에 존재하는 작은 공백들을 하나로 통합할 수 있다.
이런 기억장소의 집약을 쓰레기 수집, 흔히 말하는 garbage-collection 이라고 한다.
무조건 집약하는 것이 좋다는 것이 아니라
집약도 다음과 같은 단점이 존재한다.
1. 집약은 생산적으로 사용될 수 있는 시스템 자원을 낭비할 수도 있다.
2. 집약이 실행되면 모든걸 중지한다. 생각보다 별거 아닌거 같지면 시스템에 위험한 요소가 될수도있다.
3. 집약 시에 기억장치 내에 있는 작업들이 재배치(relocating)되어야 한다.
따라서 보통은 프로그램이 적재될 때 없애버리는 재배치 관련 정보를 쉽게 접근 할 수 있는 형태로 계속 보관해야한다.
4. 정상적일때 기억장치 내의 작업 적재환경이 급하게변해서 자주 집약해야한다.
이로 인해서 자원소모가 집약으로 얻는 손해가 이익보다 커질수도 있다.
가비지 컬렉터란?
자동 메모리 관리 시스템으로 프로그램에 의해 할당된 메모리가 더 이상 인스턴스를 참조하지 않아 가비지 상태가 되면 자동으로 메모리를 초기화한다.
가비지 컬렉터는 다음 2가지 특징이 있습니다.
- 가비지 컬렉터 동작은 자바에 의해 자동 실행되고 어느 시점에 어디에서 시작할지에 따라 다르다.
- 가비지 컬렉터가 동작하면, 어플리케이션에 있는 모든 쓰레드들은 잠시 중단된다.
'정글' 카테고리의 다른 글
TIL(6일차) (0) | 2023.04.27 |
---|---|
TIL(5일차) (1) | 2023.04.26 |
(정글) WIL1,2 (0) | 2023.04.25 |
TIL(3일차) (1) | 2023.04.17 |
(정글) Week0을 보내면서 (0) | 2023.04.14 |