자바스크립트에서의 기본타입 : 숫자, 불리언, 문자열, null, undefined 등
이들이 기본타입으로 취급되는 이유는 정해진 개수의 작은 바이트로 구성되어 있어 자바스크립트 인터프리터가 저수준
오퍼레이션을 통해 손쉽게 조작 할 수 있기 때문.
자바스크립트에서의 참조타입 : 객체, 배열, 함수
이들 참조 타입은 임의 개수의 프로퍼티나 원소를 포함할 수 있으므로, 크기가 고정된 기본 타입을 조작하듯 쉽게 조작할
수는 없음. 객체나 배열 값은 그 크기가 상당히 커질 수 있으므로 이들을 값에 의해 조작할 수는 없음.
이들을 값에 의해 조작하면 복사나 비교작업에 메모리를 비효율적으로 많이 사용해야 하기 때문.
가비지 컬렉션
참조되는 값은 변수에 직접 담기지 않음. 그 값은 어딘가 다른 위치에 저장되어 있고, 변수는 그저 그 위치에 대한 참조를
담고 있을 뿐임. 참조타입의 경우 이들을 담기 위한 저장소의 크기를 알수없는 상태에서 동적으로 할당되어야 함.
자바스크립트 프로그램에서 문자열이나 배열, 또는 객체 등을 생성할 때마다, 인터프리터는 해당 개체를 저장하기 위한
메모리를 할당해야함. 이렇게 동적으로 할당된 메모리는 언젠가는 반드시 해제되어 재활용될 수 있어야 함.
자바스크립트에서는 C,C++과 같은 언어와 달리 프로그래머가 수동으로 메모리를 해제하도록 강제하지 않음.
가비지 컬렉션 기술이 가비지 객체가 생성될 시 알아서 메모리 해제하여 재활용될 수 있도록 처리.
ex>
var s = "hello";
var u = s.toUpperCase();
s = u;
"hello"에 대한 참조가 없어짐.(가비지 객체 발생)
'programming > javascript/jquery' 카테고리의 다른 글
First Class Object (0) | 2015.05.20 |
---|---|
Node.js (0) | 2015.04.10 |
javascript의 replaceAll() (0) | 2013.11.08 |