SPA에서 ActiveX의 메모리할당이 해제되지 않는 경우
2016. 10. 18. 12:57ㆍProgramming/JavaScript
반응형
보통 ActiveX는 페이지가 닫힐 때 메모리 할당이 해제되며, 소멸자까지 실행된다. 그러나 만약 원 페이지 웹을 사용한다면 어떨까? 메모리 할당이 해제될 수도 있고, 안될수도 있다. 나의 경우에는 AngularJS를 이용하여 구현한 원 페이지 웹에서, 이러한 증상이 발생했다. 놀랍게도 해당 증상이 발생한 PC와 동일하게 설정한 후 테스트했으나, 증상이 재현되지 않았다. 아무래도 브라우저 설정에 따라 달라지는 것 같은데, 캐시 등에 페이지를 전환하면서 ActiveX의 소멸자를 호출하지 않는 듯한 증상을 보였다.
당시의 ActiveX는 영상을 스트리밍해서 화면에 출력하는 형태로, 소멸자가 호출됨과 동시에 스트리밍 세션이 종료되도록 구현되어있었다. 그러나 페이지를 전환하더라도 스트리밍 세션이 최대 세 개까지 유지됐으며, 이후 네 번째 스트리밍 세션을 연결하려고 시도할 경우 브라우저가 응답하지 않거나 혹은 종료되었다.
여하튼 잡설이 길었고, 나의 경우에는 페이지를 전환할 때마다 다음의 코드를 실행하도록 하여 해결했다.
var activex = document.getElementById("id_activex"); activex.parentNode.removeChild(activex); angular.element(activex).empty(); delete activex.prototype;
이후 페이지가 전환될 때 ActiveX의 메모리할당이 정상적으로 이뤄졌으며, 다시 ActiveX를 호출했을 시 전송량이나 혹은 메모리 사용량이 두 배로 늘어나는 현상도 발생하지 않았다. 물론 브라우저가 죽는 현상도 발생하지 않았다.
반응형
'Programming > JavaScript' 카테고리의 다른 글
많이 늦은감이 있는 Steemit dApp 개발과 관련된 조사 (0) | 2018.12.17 |
---|---|
javascript에서 sha256 암호화하기 (0) | 2017.04.06 |
웹 폰트를 로컬 스토리지에 적용하는 기법 (0) | 2016.06.26 |
The Vanilla Javascript Repository (0) | 2016.06.19 |
IE8 이하에서 배열의 IndexOf 사용하기 (0) | 2016.06.08 |