본문 바로가기

Local Oriented/HTML CSS JS

자바스크립트 개체 GC

자바스크립트에서 생성한 개체를
필요가 없어진 시점에서
강제로 GC (가비지 컬렉트) 할 수 있을까..?

개발자가 임의로 GC 를 작동하게는 할 수 없지만,
해당 개체를 null 처리 함으로써 GC 의 빌미를 제공할 수는 있다.

자바스크립트 변수 생성시 var 를 적용하지 않으면,
모두 전역변수로 설정되면서 화면이 바뀌기 전까지는 메모리를 점유하게 된다.
따라서, 루프 안에서 var 를 사용할 지 루프 밖에서 var 를 사용할 지..
function 안에서 사용할 지, function 밖에서 사용할 지 고민할 필요가 있다.

var dom = '';
for( ... ){
  dom += '...';
}
$('#id').html(dom);
dom = null; // 이렇게 null 처리 한다.

물론, 속도를 위해서는
var dom = [];
for( i ... ){
  dom[i] = '...';
}
$('#id').html(dom.concat(''));
dom = null;
이게 더 나음.. ^^;

dom 에 쌓이는 데이타가 많거나,
dom 에 데이타를 쌓는 로직이 여러번 호출되는 경우..
확실히 dom+='...' 보다 dom[i]='...' dom.concat('') 방법이 빠름.

암튼, GC 가 필요한 것은 .java 와 동일.
단순 개체는 필요없고,
Referece 가 가능한 데이타는 모두 GC 를 염두에 두어야 함.