원인은 Input session인데 지금까지 구조는 input session하나 마다 사전을 올리는 구조 였습니다. 따라서 프로그램을 많이 수행할 수록 input session이 많아지고, 그에 비례해서 메모리 사용이 증가했습니다. 한자 사전까지 로드하면 약 20M 이상이니 input session하나 마다 20M가 증가한다고 보면 쉽죠.
이것을 dictionary engine으로 분리해서 input session에서는 delegate를 통해서 객체에 접속하도록 바꾸니 메모리 사용량이 현격하게 줄었습니다. 기존의 방식과 비교해보면, 사파리 2~3개 창을 열었을때 기존에는 약 170M를 사용했는데 지금은 약 25M를 사용합니다. 이정도면 성공한것 같습니다.
이 패치는 CVS 1.18 리비젼에 적용되어서 다음 릴리즈에 포함하도록 하겠습니다.
댓글 없음:
댓글 쓰기