OutOfMemoryError와 StackOverflowError의 나란히 비교 — 차이점, 원인, 수정 방법을 이해합니다.
OutOfMemoryErrorJVM의 사용 가능한 힙 메모리가 모두 소진되었습니다.
애플리케이션이 힙이 수용할 수 있는 것보다 많은 객체를 할당합니다. 메모리 누수, 대용량 데이터셋을 메모리에 적재, 또는 작업 규모에 비해 힙 크기가 부족한 경우에 발생합니다.
`-Xmx` JVM 플래그로 힙 크기를 늘리세요. VisualVM 같은 도구로 메모리 누수를 프로파일링하세요. 대용량 데이터셋은 스트리밍이나 페이지네이션을 사용하세요. 가비지 컬렉션이 가능하도록 리소스를 올바르게 닫으세요.
StackOverflowError호출 스택이 최대 크기를 초과했습니다. 주로 깊거나 무한한 재귀가 원인입니다.
메서드가 적절한 기저 조건 없이 재귀적으로 자신을 호출하거나, 메서드 간 상호 재귀로 무한 루프가 발생합니다. 각 메서드 호출이 스택 공간을 소비하여 한계에 도달합니다.
재귀 메서드에 기저 조건을 추가하거나 수정하세요. 재귀를 반복문으로 변환하세요. `-Xss` JVM 플래그로 스택 크기를 늘리세요. 생성자나 `toString` 메서드에서 의도치 않은 무한 재귀가 없는지 확인하세요.