본문 바로가기
Testing/Jest

WIP Jest OOM, Memory leak

by BenKangKang 2025. 2. 5.

증상

회사에서 프로젝트의 CI/CD 테스트 단계에서 간헐적으로 별 이유 없이 테스트가 실패하는 증상이 발생. 원인은 OOM이었음.

테스트 코드가 늘어나면 테스트 스크립트에 사용되는 메모리도 증가하게 됨.

이슈

1. 메모리에서 완전히 해제되지 않음.

https://github.com/jestjs/jest/pull/12205

  1. jest 에서 테스트 환경 격리를 위해 vm.Script 를 사용함. (위 PR에서 다른 함수로 대체하려고 하고 있음)
  2. vm.Script 은 실행 후에 메모리에서 완전히 해제되지 않음
  3. 테스트가 많을 수록 결국 메모리가 쌓이게 되는 구조

접근

메모리를 과도하게 잡아먹으면 대처 방안은 2가지임

  1. 불필요하게 메모리 사용하는 곳을 찾아 개선한다.
  2. 허용된 메모리 이상을 사용하지 못하도록 제한한다.

분석

댓글