가상 스레드가 내 메모리를 다 잡아먹었다: 웹 크롤러 이야기

2025-05-30
가상 스레드가 내 메모리를 다 잡아먹었다: 웹 크롤러 이야기

이 글에서는 개발자가 Java의 가상 스레드를 사용하여 웹 크롤러를 구축한 경험에 대해 자세히 설명합니다. 처음에는 성능이 크게 향상되었지만, `OutOfMemoryError`로 인해 크롤러가 충돌했습니다. 저자는 가상 스레드를 사용하여 속도를 획기적으로 향상시킨 방법과 동시 작업을 제한하기 위해 세마포어를 도입하여 메모리 문제를 해결한 방법을 설명합니다. 플랫폼 스레드와 가상 스레드의 비교를 통해 JVM의 암묵적인 백프레셔 메커니즘이 더 이상 적용되지 않으므로 가상 스레드를 사용할 때는 명시적인 리소스 관리가 필요함을 강조합니다. 저자는 가상 스레드가 상당한 성능 향상을 제공하지만 메모리 문제를 피하기 위해 개발자는 리소스를 신중하게 관리해야 한다고 결론짓습니다.