intelliJ에서 스프링 부트 기반의 애플리케이션을 개발하고 있다. 종종 디버그 모드로 실행하고 브레이크 포인트를 걸어 코드를 확인해 보기도 하는데 디버그 모드로 실행하면 초기 애플리케이션 로딩 시 아주 오랜시간이 걸린다. 디버그 모드라 다 그런줄 알고 있었는데, 오늘 동료의 컴퓨터를 보다가 깜짝 놀란다. 분명히 같은 프로젝트, 같은 디버그 모드, 같은 사양의 컴퓨터인데 동료의 코드는 대략 10초면 로딩이 완료되고 내 컴퓨터에서는 1분 10초 가량이 소요된다. 팀장님이 컴퓨터를 당장 바꾸라고 난리인데 일단 원인을 찾아보았다.
일단 동료와 나의 컴퓨터 사양 체크를 했다. CPU는 같은데 메모리가 다르다. 나는 16기가 동료는 32기가! 혹시나 해서 내 컴퓨터에 32기가 메모리를 꽂고 테스트를 해보았다. 차이가 없다. 윈도우의 전원 설정에서 성능을 제한하는 건가 싶어서 최고 성능으로 바꾸어 보았다. 그래도 차이가 없다.
혹시나 해서 구글링을 해봤더니 브레이크 포인트 때문에 같은 경험을 한 사람이 보인다. 그래서 IntelliJ 메뉴 > Run > View Breakpoints 를 열어 브레이크 포인트가 걸려있는 모든 코드라인을 확인해 본다. 내가 예전에 브레이크 포인트를 걸어두고 해제하지 않은 몇몇 라인들이 보인다. 모두 삭제하고 다시 테스트 해본다. 이럴 수가! 10초 안에 로딩된다.
좀더 확실한 원인을 알기 위해 모든 브레이크 포인트를 지우고 여기 저기 브레이크 포인트를 걸며 문제를 재현시켜 보는데 문제 재현이 안된다. 그러던 중 @Configuration 어노테이션이 붙은 Spring 컨텍스트 구성파일에 있는 멤버 필드에 브레이크 포인트를 걸어보았는데 문제가 재현되었다.
결론은 @Configuration 어노테이션이 붙은 스프링 컨테이너 구성 클래스의 필드에 브레이크포인트를 걸어두면 애플리케이션이 스프링과 함께 로딩되는데 10초가 걸릴 일이 1분 10초 가량 걸리는 일이 일어 났다. 구체적인 이유까지는 찾아보지 않았다. 컴퓨터를 다시 사는 낭비는 막았다 : )