프로그래밍 언어/JAVA

오류 java.lang.OutOfMemoryError : GC 오버 헤드 제한 초과

Rateye 2021. 12. 6. 09:53
728x90
반응형
질문 : 오류 java.lang.OutOfMemoryError : GC 오버 헤드 제한 초과

JUnit 테스트를 실행할 때이 오류 메시지가 표시됩니다.

java.lang.OutOfMemoryError: GC overhead limit exceeded

OutOfMemoryError 가 무엇인지 알고 있지만 GC 오버 헤드 제한은 무엇을 의미합니까? 어떻게 해결할 수 있습니까?

답변

이 메시지는 어떤 이유로 가비지 수집기가 과도한 시간 (기본적으로 프로세스의 모든 CPU 시간의 98 %)을 많이 사용하고 각 실행에서 매우 적은 메모리 (기본적으로 힙의 2 %)를 복구 함을 의미합니다.

이것은 효과적으로 프로그램이 진행을 중지하고 항상 가비지 콜렉션 만 실행 하느라 바쁘다는 것을 의미합니다.

애플리케이션이 아무 작업도 수행하지 않고 CPU 시간을 흡수하지 못하도록 JVM에서이 Error 발생시켜 문제를 진단 할 수 있습니다.

내가 본 드문 경우는 일부 코드가 이미 메모리가 제한된 환경에서 수많은 임시 객체와 약하게 참조 된 객체를 생성하는 경우입니다.

다양한 Java 버전에 사용할 수 있으며이 특정 문제에 대한 섹션이 포함 된 Java GC 조정 안내서를 확인하십시오.

출처 : https://stackoverflow.com/questions/1393486/error-java-lang-outofmemoryerror-gc-overhead-limit-exceeded
728x90
반응형