Error 정리
Error : java.lang.StackOverflowError
320Hwany
2022. 8. 23. 08:48
java.lang.StackOverflowError
at jpabook.jpashop2.domain.Order.setDelivery(Order.java:55)
at jpabook.jpashop2.domain.Order.setDelivery(Order.java:55)
at jpabook.jpashop2.domain.Order.setDelivery(Order.java:55)
at jpabook.jpashop2.domain.Order.setDelivery(Order.java:55)
at jpabook.jpashop2.domain.Order.setDelivery(Order.java:55)
...
이 에러는 메모리가 꽉 찰 경우 JVM이 에러를 발생시킨다. java.lang.StackOverflowError 이 에러는 사용가능한 메모리가 더 이상 없다는 뜻이다.
public void setDelivery(Delivery delivery) {
this.setDelivery(delivery);
delivery.setOrder(this);
}
문제는 다음과 같이 setDelivery 메소드안에 계속 setDelivery 메소드를 호출해 무한루프가 된다...
public void setDelivery(Delivery delivery) {
this.delivery = delivery;
delivery.setOrder(this);
}
다음과 같이 수정했더니 오류 해결!!
모두 이런 경우는 아니겠지만 메소드를 무한으로 호출하지는 않는지 확인해보면 좋을 것 같다.
무한으로 호출하면 JVM 메모리의 스택 부분이 꽉차서 더이상 사용가능한 메모리가 없다는 예외가 발생한다.