본문 바로가기

Size3

Heap Dump 분석 - Jmap & Eclipse Memory Analyzer(MAT) Java Application을 개발하고 운영하다 보면 메모리 누수 즉, OutOfMemoryError를 겪는 경우가 있다. 그 중에서도 힙 메모리 공간이 부족해서 생기는 에러인 java.lang.OutOfMemoryError: Java heap space이 발생했을 때 HeapDump 분석을 하는 방법에 대해서 정리한다. Heap Dump 분석 - Jmap & Eclipse Memory Analyzer(MAT) java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError 예외는 메모리 누수 상황이 발생했을 때 발생하며 그 중에서도 Java heap space 예외는 JVM 내 힙 공간이 부족하여 생기는 예외이다. 힙은 서버를 구동할 때 .. 2023. 3. 17.
자바 -Xms -Xmx 힙 메모리 설정 Jar 파일을 실행할 때 여러 옵션들을 줄수가 있는데 그 중에서도 힙메모리 관련 설정인 -Xms와 -Xmx 옵션에 대해서 정리한다. 자바 -Xms -Xmx 힙 메모리 설정 -Xms와 -Xmx -Xms와 -Xmx 옵션은 Jar 파일을 실행할 때 초기 할당 메모리와 최대 할당 메모리를 지정하는 옵션이다. 간혹 -Xms 옵션을 초기 할당 메모리가 아닌 최소 할당 메모리로 잘못 알고 있는 경우가 있는데 최소가 아닌 초기 할당 이다. 만약 다음과 같이 설정을 했다고 가정해보자. -Xms2048m -Xmx4096m 다음과 같이 옵션을 주고 jar 파일을 실행하게 되면 초기 힙 메모리 사이즈가 2048MB로 설정되고 최대는 4096MB로 설정이 된다. 테스트를 위해서 인텔리제이에서 자바 애플리케이션을 실행할 때 옵션.. 2023. 3. 14.
JPA - N+1 문제와 해결방법 정리 들어가며 JPA를 사용하다 보면 N+1 문제를 한번씩은 겪어봤을것이다. 하지만 콘솔창을 자세히 보지 않았다면 그냥 지나쳤을 수도 있다. N+1의 문제가 발생한다고 해서 결과에 문제가 생기는 것은 아니지만 성능에는 문제가 생길 수 있기 때문에 확실히 인지해서 문제를 해결하는 것이 좋다. N+1 문제란 무엇인가? 연관관계가 설정된 엔티티를 조회할 때 조회 된 데이터의 갯수만큼 조회 쿼리가 추가로 발생하는 경우는 말한다. 이해를 돕기 위해 예를 들면 팀과 회원의 연관관계에서 팀을 조회했을때 팀에 속한 회원이 10명 있다고 가정할때 팀을 조회할때 연관관계를 가지고 있는 회원을 조회하는 쿼리가 10번(n번) 발생하는 것을 의미한다. N+1 == 10번(회원) + 1번(팀) Fetch 모드에 따른 결과 (즉시 로딩.. 2022. 8. 9.