* 가비지 컬렉션 (garbage collection)이란?
- 메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능이다.
- C언어는 개발자가 직접 메모리를 관리를 해야함
- C#, GO, JAVA, JavaScript는 우리가 메모리 관리를 해줄 필요가 없다.
- 다 쓴 메모리도 우리가 직접 청소해줄 필요가 없다. Garbage Collection(GC)이 있기 때문이다.
- 어떤 경우에 메모리가 그대로 남아있는지 어떤경우에 GC에 의해서 나의 메모리가 정리되는지 알고 있어야 효율적인 메모리 어플리케이션을 만들 수 있다.
- GC는 object를 참고하고 있는 사람이 있는지 없는지 확인을 하고 있다가
- 아무도 해당 object를 가지고 있지 않다면 쓰레기로 간주해서 메모리에서 제외시킨다.
- GC는 자바스크립트 엔진 백그라운드 프로세스이다.
- GC동작은 CPU가 동작하기 때문에 너무 자주 수집되면 청소하는데 리로스가 많이 들어가게된다.
- 불필요한 메모리를 재할당하지말고 필요한 만큼만 쓰는것이 좋다.
- 글로벌 변수는 앱이 종료될때까지 계속 메모리에 유지됨!
- 이름 충돌도 발생할 수 있고 메모리측면에서 좋지 않기 때문에 글로벌 변수는 잘 쓰지 않는게 좋다.
- 가급적 변수는 필요한 곳에서 선언하여서 사용하는것이 좋다.
* GC관련 코드 예시
const global = 1;
{
// 블럭 내부에서만 존재하고, 블럭이 끝나면 자동으로 소멸됨 (GC)
const local = 1;
}
function print() {
// 함수 내부에서도 블럭안에서 필요한 경우에는
// 필요한 곳에서! 블럭 안에서 변수를 선언하고 사용해야 함
if (true) {
let temp = 0;
}
}
'Study > JavaScript' 카테고리의 다른 글
[JavaScript_study] 호이스팅 (Hoisting) (0) | 2022.04.14 |
---|---|
[JavaScript_study] 렉시컬 환경(Lexical Environment) (0) | 2022.04.14 |
[JavaScript_study] 스코프(Scope) (0) | 2022.04.14 |
[JavaScript_study] fetch api (0) | 2022.04.13 |
[JavaScript_study] JSON: JavaScript Object Notation (0) | 2022.04.13 |