-
[JS] 가비지 컬렉션공부 2021. 9. 16. 01:19
- 컴퓨터가 일을 할때 처리할 정보들을 올려놓을 공간이 필요한데 이 공간이 메모리.
- 메모리가 클 수록 동시에 더 많은 일을 할 수 있음 => 컴퓨터를 살 때 RAM을 보는 이유.
- 컴퓨터에 작성하는 객체, 변수, 함수들이 메모리 공간을 차지하는 요소들임.
- 프로그램 구동 중 필요하지 않는 메모리를 계속 점유하고 있는것을 메모리 누수(Memory Leak)이라고 함.
- 메모리가 꽉 차기 전에 중간 중간 치워줘야함. 프로그래머가 비워줘야 할 메모리 공간을 모두 챙기는 것은 불가능.
- 이를 방지하고자 가비지 컬렉션 도입!
- 메모리를 알아서 관리하는 언어들을 managed language라고 함.
방법
- mark-and-sweep: 메모리를 쭉 훑으면서 아직 필요한 것들만 마크한 다음 마크 안된것은 치움.
- reference-counting: 한 요소가 다른 요소에게 몇번이나 참조가 되었는지 카운트 해서 그 수가 0이면 치움.
한계
- 지워야 할 것을 모두 잡아내진 못함.
- 각 언어, 플랫폼, 기기마다 바람직한 메모리 관리 방식 알아봐야 함.
- 순환 참조하지 말것.(순환 참조를 하면 reference-counting이 0이 되지 않음.)
'공부' 카테고리의 다른 글
[JS] 자바스크립트에서 비동기가 가능한 이유 (0) 2021.09.23 [JS] Arrow function 과 function의 차이 (0) 2021.09.16 [JS] var, let, const - 스코프, 중복선언, 재할당, 호이스팅 (0) 2021.09.15 [React] 렌더링 횟수 줄이기 (0) 2021.09.07 [React] 성능 지표 보기 (0) 2021.09.06