Java & Kotlin

Stack Overflow Error 발생 원인과 해결 방법: 재귀 호출 피하기

백엔드 유성 2023. 5. 15. 21:40

Stack overflow error는 함수를 재귀 호출하거나 순환 참조하거나, 너무 많은 메소드가 실행되어 제한된 스택 메모리 용량을 초과할 경우 발생합니다.

 

아래는 에러 발생 예시입니다.

public class StackOverflowDemo {
    public static void recursiveMethod() {
        recursiveMethod();
    }

    public static void main(String[] args) {
        recursiveMethod();
    }
}

하나의 메서드를 호출하면 하나의 스택이 쌓입니다.

이게 반복되어 쌓이면 StackOverflowError가 발생합니다.

 

에러를 해결하기 위해 '재귀', '순환 참조'로직은 가급적 피하고, 불가피하게 사용해야 할 경우 Stack Mem 용량을 높게 설정하는 방법이 있습니다.