문자열

문자열은 메모리에 영향을 많이 미친다.

특히나 기본 utf8 로 저장이 되기 때문에 우리가 생각했던 것 보다 훨씬 많은 메모리를 요구할 수 있다.

예를 들어

"aaa"

라는 문자열이 있다고 쳤을 때 보통 3바이트라고 생각할수 있겠지만

브라우저는 훨신 많은 메모리를 잡아먹는다. (기본적으로 6바이트 이상, 문자열 구조안에서 생기는변수도 있어서)

그래서 문자열을 많이 생성하는 것은 메모리를 많이 차지하게 된다.

하지만 단순히 많이 생성한다고 메모리를 많이 먹는 것은 아니다.

기본적으로 브라우저는 같은 문자열에 대해서 같은 객체로 취급하기 때문에

같은 문자열이 반복적으로 많으면 메모리에 별로 영향을 안 줄 수도 있다.

문제는 다른 문자열이 아주 많이 반복될 때이다.

예를 들어 100만건 짜리 리스트가 있는데. 리스트에 있는 아이템 중에 필드가 문자열이 있다고 치자. 100만건 모두가 다르다고 치면 모두 다른 메모리 공간을 써야 하기 때문에 상당한 메모리를 차지하게 된다.

하지만 100만건 모두 같은 문자열이라고 치면 메모리 공간은 하나만 사용하게 된다.

이것은 chrome 에서 메모리 스냅샷을 떠보면 알 수 있다.

같은 문자열에 대해서는 참조하는 주소 값이 동일하다.

즉 하나만 쓴다는 이야기이다.

results matching ""

    No results matching ""