2017-09-08 3 views
3

애니메이션 동안 불미스러운 가비지 콜렉터 딸꾹질을 초래하는 나는 반드시 CPU를 많이 사용하지 않습니다 일부 처리가 있지만, 임시 개체 많이 생성 등웹 작업자가 자체 가비지 수집기를 사용합니까?

웹 근로자 완화하는 데 도움이 임시 객체 생성 프로세스를 오프로드 것인가 그? 다른 말로 - GC 딸꾹질은 웹 작업자 스레드로 격리되어 메인 스레드에 영향을 미치지 않습니까? 아니면 두 스레드에 영향을주는 GC 무언가입니까?

+0

내 추측은 그렇습니다.하지만 그것은 순전히 추측입니다. – Ced

답변

4

ECMAScript 사양은 형식 메모리 관리를 지정하지 않으며 가비지 수집은 비표준 부분에서만 참조됩니다.

마찬가지로 웹 작업자 사양에서는 wrt를 제외한 가비지 수집에 대해 많이 언급하지 않습니다. 어떤 물체가 얼마나 오래 살아야하는지.

구현 별 동작입니다. 구현이 작업자 별 GC를 구현하고 일반적인 경우에 공유 오버 헤드를 피할지라도 메모리 압박으로 인해 특히 전 세계적으로 제한된 시스템에서 모든 직원의 전역 수집을 트리거 할 수 있습니다.

그렇다면 근로자들과 함께 GC 격리를 달성 할 가능성이 높습니다. 그러나 구조화 된 복제 알고리즘의 메시지를 직렬화하면 추가 쓰레기가 생길 수 있으므로 작업자와 주 스레드 간의 메시징 오버 헤드를 피하기 위해주의해야합니다. 전송 가능 또는 공유 메모리 버퍼를 사용하면이 문제를 피할 수 있습니다.

+0

감사합니다. 대답을 수락했습니다. 주요 브라우저가 이것을 구현하는 방법에 대한 문서가 있다면 좋을 것입니다. 그 정보를 가지고 있습니까? – davidkomer

+2

구현이 변경되고 GC 속성이 보증의 일부가 아니므로 외부 사용자를 위해 문서화하지 않습니다. 그러나 당신은 여전히 ​​그들의 bugtrackers 또는 기술 블로그에서 정보를 찾을 수 있습니다. 파이어 폭스의 경우 GC가 잠시 동안 분류되어 꽤 고립되어 있지만, 언급 한 메모리 압력에 대한 대체 이벤트와 일부 공유 된 것들이 존재합니다. dr : 예, sortof. 그러나 공식적 또는 명시 적 보증이 없으며, 변경 될 수 있으며 구현에 따라 달라질 수 있습니다 – the8472